close

什麼是生命週期?

以人為例,即人有幼年(其階段工作為吃、睡、玩)、青年(其階段中主要的工作為學習)、壯年(其階段中主要的工作為工作、結婚)…等,而相對的物件也有生命週期,一個物件從創建到運行,及執行各式各樣的任務,並到最終的被銷毀等階段,我們也可稱其為物件的生命週期。

 

Activity的生命週期函數與其調用時機

 02_activity_lifecycle.png  

▲ Activity運行流程圖(長方形代表callback methods(回呼函式),可以做出想要處理的事情,有顏色的部份就是實際Activity會處於的狀態)

生命週期函數

調用時機

onCreate

Activity物件被第一次創建時調用,即通常用來做程式的初使化動作。

onStart

Activity變得可見時調用該函數。

onResume

Activity開始準備與用戶交互時調用該方法,即把保存的資料拿回來使用。

onPause

當系統即將啟動另外一個Activity之前調用該方法,即把需要保存的資料保存。

onStop

當前Activity變得不可見時調用該方法。

onDestroy

當前Activity被銷毀之前將會調用該方法,即通常都拿來把onCreate()時的資料做釋放的動作。

onRestart

當一個Activity再次啟動之前將會調用該方法。

 

1. Activity的生命週期函數為系統自行調用的,而非開發人員去控制的。不過,開發人員可於該函數中填入所要執行的程序。

 

2. 一般Android Application遵循的動作流程:

(1) 一般啟動

onCreate à onStart à onResume

啟動一個Activity的基本流程是:分配資源給這個Activity(onCreate),然後將Activity內容顯示到螢幕上(onStart),在一切就緒後,取得螢幕的控制權(onResume),使用者可以開始使用這個程式。

 

(2) 呼叫另一個Activity

onPause(1) à onCreate(2) à onStart(2) à onResume(2) à onStop(1)

先凍結原本的Activity,再交出直接存取螢幕控制權(onPause)的過程。直到Activity 2完成一般啟動流程後,Activity 1才會被停止。

 

(3) 回復原Activity

onPause(2) à onRestart(1) à onStart(1) à onResume(1) à onStop(2) à onDestroy(2)

Back鍵可以回到原本的Activity

 

(4) 退出/結束

onPause à onStop à onDestroy

如果程式中有直接呼叫finish函式來關閉Activity的話,系統會暫停(onPause)後停止(onStop),然後才是銷毀(onDestroy)

 

(5) 回收後再啟動

onCreate à onStart à onResume

被回收掉的Activity一旦又重新被呼叫時,會像一般啟動一樣再次呼叫ActivityonCreate函式。

 

※參考資料:初學 Android Android Activity生命週期簡介

 

 

arrow
arrow

    Elsa 發表在 痞客邦 留言(0) 人氣()