Activity生命周期
在Android中有4種組件:Activity、Service、Broadcast、Contentprovider。其中Activity是狀態最多、最復雜的組件,也是最應當了解清楚的組件。
Activity的生命周期如圖:
圖1
圖2
由圖可以看出Activity的狀態包括:Create、Start、Resume、Pause、Stop、Destroy狀態。圖2可能更能理解1個Activity從啟動到滅亡的全部進程,基本上是從創建(onCreate)->開始(onStart)->展現(onResume)->暫停(onPause)->停止(onStop)->燒毀(onDestroy)的進程。
如何正確理解各自狀態的變化,我們可以采取不同分類進行理解(微信號:react-javascript)。
1.可見與不可見
a.可見:Started、Resumed、Paused狀態
Started:履行onCreate后,組件該處于Started狀態,履行onStart事件,組件第1次顯現在用戶眼前,其各類頁面信息均已設置完成。但是與Resumed不同的是,此時用戶沒法與Activity進行交互。
Resumed:履行完onStart后,進入Resumed狀態,此時組件處于可交互狀態,用戶可以進行輸入和讀取。
Paused:組件失去焦點,用戶點擊返回鍵或組件被覆蓋了。組件處于半可見狀態,但是此時頁面UI還是可以更新的。
b.不可見:Created、Stopped、Destroyed
Created:履行onCreate事件,設置頁面元素與布局,綁定各類 數據,建立與頁面布局文件關聯setContentView。
Stopped:頁面不可見,1般在新的組件創建并進入新組件時,原組件將不可見,進入Stopped狀態。
Destroyed:組件被燒毀。
2.3個環路
a.Resumed->Paused->Resumed:輕量級環路,1般處于頁面頻繁操作,無需重新設置初始數據。類似于行駛汽車的剎車,需要隨時停止,但其實不關閉發動機。
b.Started->Resumed->Paused->Stopped:1個可以稱之為半重啟的環路,僅僅只是不需要履行onCreate,不需要設置頁面布局。履行onStop事件后,組件稱為后臺利用。
c.Created->Started->Resumed->Paused->Stopped->Created:此環路并沒有在圖形中劃出來,僅僅在內存不夠,別的利用需要內存的情況下履行,相應的組件進程會被killed,但用戶履行back,系統將重現創建組件。
3.可履行次數
a.只有1次:onCreate、onDestroy.
b.其它可以屢次。
除Activity正常創建運行外,其它操作也會引發Activity的狀態變化。
從狀態變換可以看出,在屏幕旋轉時狀態變化類似于重新創建,但是在現實利用中我們常常有這樣的需求。在Android中采取的是onSaveInstanceState和onRestoreInstanceState進行保存數據和恢復數據。
Activity是Android系統中最重要的組件,各個狀態轉換也存在1些模糊的界限,哪一個操作具體放在哪一個事件中需要根據Acitvity的狀態特點和業務需要來定,并不是只能放著1個地方,仁者見仁、智者見智了。
上一篇 Java分布式事務原理及應用