2013年8月16日 星期五

第四課: Activity 的生命週期 LifeCycle

我們將Activity切成以下幾個單元來說:

1. Activity 是什麼
Activity 是 Android 程式的表現層, 它管理資料在螢幕的呈現方式.
通常一個Android應用程式(App) 會有好幾個activity, 不同的activity 之間可以透過按鈕以及back鍵轉換.

2. Activity 的 LifeCycle
Actvitiy 從產生到結束會經過幾個不同的states, 我們通常稱之為 LifeCycle (生命週期).
瞭解Activity 是處於哪一個 states, 就能夠知道Activity之後會實作哪一個方法.

知道這個的重要性在於我們能夠及時地釋放或取得的資源, 例如: GPS, Camera, Service, BroadCastReceiver...等
也能夠在適當的時機儲存資訊, ex. 訊息草稿, 遊戲分數等級...等等

3. LifeCycle的圖解
在 Android Developer 新的文件中, 使用金字塔式的圖形來解釋 Android 的LifeCycle.



a. 程式經由onCreate()進入Created state, 在onCreate()應該要宣告並取得你會用到的UI元件, 以及UI元件的互動方法. ex. Click

b. 接著, 程式會經由onStart()進入 Started state, 在onStart()應該要取得使用者的個人使用資料, 並且取得部分需要的資源, ex. GPS.

c. 等程式進入onResumed state, 就是進入了螢幕的顯示狀態, 所以在onResume()的方法中必須取得必要的顯示資源, ex. Camera

d.
*如果程式跳離了畫面但上一個activity還看得到(也就是部分看得到), 那activity就會進入Paused state
*如果整個跳離了(完全看不到), 則activity會進入 Stopped state.

舉個例子而言:
我們的Activity執行到一半, 但有一則Line的訊息進來, 它顯示的是Dialog, 所以我們的Activity會在此時進入Paused state, 如果按取消則程式回到Resumed state.
如果按顯示, 則程式會到Stopped state, 當看完訊息, 按back鍵回到程式時, 就會經過Started state 回到 Resumed state.

所以假設我們的資料會在Line顯示的時候流失, 就應該在onPause() 或者 onStop() 先記錄下來.

那麼大家也可以想想當一通電話打進來的時候, 我們的Activity會經過哪些states?




今日範例(來源): 程式碼



沒有留言:

張貼留言