2013年2月4日 星期一

LifeCycle

  • 為什麼要了解生命週期? 


        通常,每一個應用程式〈入口一般會是一個 Activity 的 onCreate 方法〉,都會佔據一個 Process 。當系統記憶體即將不足的時候,會醫照優先及自動進行 Process 的回收。不管是使用者或開發者,都無法確定應用程式何時會被回收。 

        一個 Activity 類別除了「OnCreate」函式之外,還會預先定義「OnPause」、「OnResume」等等的基本行為。當從一個 Activity 切換到另一個 Activity 的時候,原本的 Activity 將經過一連串的狀態改變。開發者可以在程式中添加一些個狀態相對應的流程,每次 Activity 改變狀態實,就會執行相對應的流程。 

        要讓使用者有好的使用經驗,Activity 需要在各個周期點上負責保管狀態、恢復狀態、傳送資料等工作。



  • Activity 的狀態

  1. Active
  2. 「Active」狀態是使用者啟動應用程式或 Activity 後,Activity 運行中的狀態。
  3. Paused
  4. 「Paused」狀態是目前運行的螢幕畫面暫時暗下來,退到背景畫面的狀態。
  5. Stopped
  6. 「Stopped」狀態是當有其他 Activity 正在執行,而這個 Activity 已經交出螢幕控制權,處於不在動作的狀態。
  7. Dead
  8. 「Dead」狀態是 Activity 尚未被啟動、已經被手動終止,或已經被系統回收的狀態。


  • 觀察 Activity 運作流程

public class Main extend Activity {

      private static final String TAG = "XXX";



      public void onCreate() {

            super.onCreate(...);

            Log.v(TAG, "onCreate");

      }



      public void onRestart() {

            super.onRestart(...);

            Log.v(TAG, "onRestart");

      }



      public void onStart() {

            super.onStart(...);

            Log.v(TAG, "onStart");

      }



      public void onResume() {

            super.onResume(...);

            Log.v(TAG, "onResume");

      }



      public void onPause() {

            super.onPause(...);

            Log.v(TAG, "onPause");

      }



      public void onStop() {

            super.onStop(...);

            Log.v(TAG, "onStop");

      }



      public void onDestroy() {

            super.onDestroy(...);

            Log.v(TAG, "onDestroy");

      }

}




  1. 資源分配〈Create / Destroy〉
  2. 可見與不可見〈Start / ReStart / Stop〉
  3. 是否有螢幕控制權〈Resume / Pause〉

  • Activity 運作流程
Android 官方網站上提供的 Activity 運作流程圖

  • 一般啟動
onCreate -> onStart -> onResume

啟動 Activity 時的狀態變化
  • 呼叫另一個 Activity
onPause (1) -> onCreate (2) -> onStart (2) -> onResume (2) -> onStop (1)
呼叫另一個 Activity 時的狀態變化
  • 返回原 Activity
onPause (2) -> onRestart (1) -> onStart (1) -> onResume (1) -> onStop (2) -> onDestroy (2)
返回原 Activity 時的狀態變化
  • 退出結束
onPause -> onStop -> onDestroy
明確結束 Activity 時的狀態變化
  • 回收後再啟動
onCreate -> onStart -> onResume
重新啟動時 Activity 的狀態變化

  • 參考資料
        Google! Android 3 手機應用程式設計入門 第四版
        Developer Android

沒有留言:

張貼留言