Activity的生命周期

Activity生命周期分為兩部分:一種是典型的生命周期,另一種就是異常情況下的生命周期(即指Activity被系統(tǒng)回收或是設(shè)備的Configuration發(fā)生改變導致的Activity被銷毀或是重建)。

典型的生命周期:
(1)onCreate:Activity正在被創(chuàng)建,進行初始化工作。
(2)onStart:Activity正在被啟動,這時Activity已經(jīng)可見,但不處于前臺(處于后臺),無法交互,即Activity已經(jīng)顯示出來了,但我們還看不到。
(3)onRestart:Activity正在重新啟動。一般,Activity從不可見重新變?yōu)榭梢姞顟B(tài)時會被調(diào)用。
(4)onResume:Activity已經(jīng)可見,并出現(xiàn)在前臺并開始活動。
(5)onPause:Activity正在停止,此時可以做一些存儲數(shù)據(jù)、停止動畫的操作,但不能太耗時。因為這回影響到新Activity的顯示,onPause必須先執(zhí)行完,新Activity的onResume才會執(zhí)行。
(6)onStop:Activity即將停止,此時可以做一些重量級的回收工作,同樣不能太耗時。
(7)onDestroy:Activity即將銷毀,回收工作和最終的資源釋放。

生命周期.png

特殊情況:
(1)當用戶打開新的Activty或者切換到桌面的時候,回調(diào):onPause-onStop,但是如果新的Activity采用了透明的主題那么當前的Activity不會回調(diào)onStop。
(2)當Activity被系統(tǒng)回收后再次打開,生命周期的毀掉過程和第一次打開一樣,但是不代表所有過程都一樣。

問1:onStart和onResume、onPause和onStop從描述上來看差不多,對我們來說有什么實質(zhì)的不同呢?
答:這兩個配對的回調(diào)分別表示了不同的意義,onStart和onStop是從Activity是否可見這個角度來回調(diào)的,onResume和onPause分別是從Activity是否位于前臺這個角度來回調(diào)的,在實際的使用中沒有其他明顯的區(qū)別。

問2:假設(shè)當前Activity A,如果這時用戶打開一個新的Activity B,那么B的onResume和A的onPause哪個先執(zhí)行?
答:A的onPause先執(zhí)行。(詳解見源碼)

異常情況下的生命周期
Activity異常銷毀將調(diào)用onSaveInstanceState和onRestoreInstanceState方法去保存和恢復數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容