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即將銷毀,回收工作和最終的資源釋放。

特殊情況:
(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ù)。