天天看點

活動的生命周期(Activity Lifecycle)

1.活動是通過活動棧進行管理的,當一個新的活動開始時,它被放在棧的最頂端,在棧中它的前一個活動會放在目前新活動的下面。

2.一個活動有最重要的四種狀态:

當它在螢幕的最前端的時候(在棧的頂端),此時它是處于運作狀态。

當一個活動依舊是可見的 ,但是并不在螢幕的最前端(不在棧頂),此時它是處在暫停狀态,暫停狀态的活動仍舊是存活的,但是當記憶體極低的極端情況下,是可以被回收的。

當一個活動被另一個活動完全隐藏的時候,它就處于停止狀态,此時對使用者它是不可見的,在需要記憶體的時候,這種活動經常會被回收。

當一個活動被暫停或停止,系統可是通過主動結束活動或者殺死它的程序來在釋放活動的記憶體

3.活動的三種循環的生存期:

entire lifetime (完整的生存期):從onCreate()到onDestroy()方法之間,活動會在onCreate()完成初始化操作,在onDestroy()中釋放占用的資源。例如,如果一個活動有一個線程完成從網上下載下傳資料,它應該在onCreate()中建立線程,在onDestroy()終止此線程。

visible lifetime(可見的生存期):從onStart()到onStop()方法之間。在這段時間,活動對于使用者是可見的,但是并非是在最前端可以與使用者進行互動的。在這兩個方法中管理在活動中顯示的資源。當活動對使用者可見和隐藏時,這兩個方法會被多次調用。

foreground lifetime(前端的生存期):從 onResume()到onPause方法之間,在這個期間,此活動在所有活動之前并與使用者進行互動。

活動的生命周期(Activity Lifecycle)

活動的生存期:

onCreate():活動第一次建立時調用此方法,在這個活動中完成初始化操作例如:加載布局,對lists綁定資料。

onRestart():再活動被停止之後可被調用,在活動重新啟動之前。

onStart():當活動對使用者從不可見變為可見的時候調用。

onResume():當活動準備與使用者進行互動時調用,此時活動位于棧頂。

onPause():這個方法在系統準備去啟動或者恢複另一個活動時調用。通常在這個方法中将一些消耗CPU的資源釋放掉,以及儲存一些關鍵的資料,但是此方法的執行速度要快,在這個方法結束前,下一個活動無法走上最前端。

onStop()::當活動對使用者不可見的時候調用,因為此時其他的活動已經在前端且覆寫在此活動之上。與onPause的主要差別在于,當啟動的新活動是對話框的形式時,onPause執行而onStop不執行。

onDestroy():這個方法在活動銷毀之前調用,這個在活動結束(調用finish()方法)或者系統暫時結束活動執行個體以節省記憶體。

活動的生命周期(Activity Lifecycle)