接下來,我們要來討論Android系統中,最重要的部份之一,就是Activity的部份,我們將由Activity的Lift Cycle來討論它的運作機制,再來就是要如何建立一個Activity。最後,我們再來討論要如何傳送資料給另一個Activity。一步一步來了解Activity。
首先,在Android系統中的Activity(活動),可以將它想成是一個使用者的操作介面或是一個表單程式即可,原則上它會提供使用者一個互動式的介面功能。而一個應用程式是有多個Activity組成的。
Activity的生命週期。如圖42所示。
圖42
主要的可以分成三個模式來說明:
1. foreground process (前景模式)
此模式就是目前正顯示於手機螢幕上的應用程式畫面,由onCreate()、onStart()、onResume()函式呼叫的Activity都會變成正在執行的Activity。發生情況為剛執行某一個應用程式時。
後續的處理有二種情況:
- 直接被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
- 依情況發生visible process及background process等後續情況。
2. visible process (可見模式)
此模式就是當Activity視窗畫面變成透明時,就會由onPause()函式掌控進入暫停狀態,當被呼叫出來的對話視窗、提示時物件結束時,該Activity就會再度被拉到前景模式,而由onResume()函式喚醒該Activity視窗。發生情況為應用程式跳出對話視窗與使用者互動時,而原來的視窗會變成透明,而對話視窗就變成前景了。
後續的處理有二種情況:
- 如果暫停狀態,閒置太久,就會被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
- 觸發onResume()函式喚醒該Activity視窗。
3. background process (背景模式)
此模式就是當Activity視窗畫面被另一個Activity完全覆蓋時,就會完全看不見。而觸發onStop()函式,成為停止的狀態。發生情況為在兩個不同的應用程式開啟時,後來開啟的應用程式會覆蓋原來的應用程式。
後續的處理有三種情況:
- 直接被onDestroy()結束,該程式將完全關閉。無法再使用任何返回鍵回到該程式。
- 當記憶體足夠時,而另一個Activity關閉時,而由onReStart()函式喚醒原來的Activity。回到原來的狀態。
- 當其他的Activity需要記憶體時,就會優先被清除。釋放出記憶體供其他應用程式來使用。當使用者又再度瀏覽回剛剛被清除的Activity時,則再執行onCreate()函式重新啟動該Activity。
而會用到的程式事件,整理如表12所示:
程式事件 | 說明 | 時機 |
onCreate() | 建立 | 當Activity啟動時觸發。可以進行初始化的動作。 |
onStart() | 開始 | 當Activity即將被展示給使用者觀看時觸發。 |
onResume() | 回復 | 當Activity開始跟使用者互動時觸發。 |
onPause() | 暫停 | 當Activity即將進入背景時觸發。 |
onStop() | 停止 | 當Activity不再被使用者看到時觸發。 |
onRestart() | 重置 | 當Activity要從停止狀態重新被展示時觸發。 |
onDestroy() | 銷毀 | 當Activity被銷毀之前時觸發,可以進行釋放資源的動作。 |
表12