2010年7月28日 星期三

從無到有-實戰Android系統開發-程式實戰(8)-生命週期(Life Cycle)

接下來,我們要來討論Android系統中,最重要的部份之一,就是Activity的部份,我們將由ActivityLift Cycle來討論它的運作機制,再來就是要如何建立一個Activity。最後,我們再來討論要如何傳送資料給另一個Activity。一步一步來了解Activity

首先,在Android系統中的Activity(活動),可以將它想成是一個使用者的操作介面或是一個表單程式即可,原則上它會提供使用者一個互動式的介面功能。而一個應用程式是有多個Activity組成的。

Activity的生命週期。如圖42所示。

42

主要的可以分成三個模式來說明:

1. foreground process (前景模式)

此模式就是目前正顯示於手機螢幕上的應用程式畫面,由onCreate()onStart()onResume()函式呼叫的Activity都會變成正在執行的Activity。發生情況為剛執行某一個應用程式時。

後續的處理有二種情況:

  1. 直接被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
  2. 依情況發生visible processbackground process等後續情況。

2. visible process (可見模式)

此模式就是當Activity視窗畫面變成透明時,就會由onPause()函式掌控進入暫停狀態,當被呼叫出來的對話視窗、提示時物件結束時,該Activity就會再度被拉到前景模式,而由onResume()函式喚醒該Activity視窗。發生情況為應用程式跳出對話視窗與使用者互動時,而原來的視窗會變成透明,而對話視窗就變成前景了。

後續的處理有二種情況:

  1. 如果暫停狀態,閒置太久,就會被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
  2. 觸發onResume()函式喚醒該Activity視窗。

3. background process (背景模式)

此模式就是當Activity視窗畫面被另一個Activity完全覆蓋時,就會完全看不見。而觸發onStop()函式,成為停止的狀態。發生情況為在兩個不同的應用程式開啟時,後來開啟的應用程式會覆蓋原來的應用程式。

後續的處理有三種情況:

  1. 直接被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
  2. 當記憶體足夠時,而另一個Activity關閉時,而由onReStart()函式喚醒原來的Activity。回到原來的狀態。
  3. 當其他的Activity需要記憶體時,就會優先被清除。釋放出記憶體供其他應用程式來使用。當使用者又再度瀏覽回剛剛被清除的Activity時,則再執行onCreate()函式重新啟動該Activity

而會用到的程式事件,整理如表12所示:

程式事件

說明

時機

onCreate()

建立

Activity啟動時觸發。可以進行初始化的動作。

onStart()

開始

Activity即將被展示給使用者觀看時觸發。

onResume()

回復

Activity開始跟使用者互動時觸發。

onPause()

暫停

Activity即將進入背景時觸發。

onStop()

停止

Activity不再被使用者看到時觸發。

onRestart()

重置

Activity要從停止狀態重新被展示時觸發。

onDestroy()

銷毀

Activity被銷毀之前時觸發,可以進行釋放資源的動作。

12