2010年5月15日 星期六

Android程式設計(五) 觀察Activity生命週期

Android提供Log函式可以讓我們在程式碼中加入稽核記錄,再利用LogCat工具來檢視記錄,透過Log記錄來檢查程式程行的軌跡,可協助我們分析程式。
應用程式要引用Log函式很簡單,只要import android.util.Log,程式中就可使用Log函式。為方便我們管理或識別記錄,Android提供5種Log函式:
Log.v  完整(verbose)
Log.d  除錯(debug)
Log.i  通知(info)
Log.w  警告(warn)
Log.e  錯誤(error)
這些Log函式的第一個參數是自訂的工作記錄標籤,以方便區隔不同activity/service所建立的記錄,第二個參數為要寫入的工作記錄訊息內容。
以下以追踨activity的生命週期為例,說明如何應用Log功能來觀察activity狀態切換時onXX()方法之執行順序。
1. 建立LC-LOGGER專案
(1). Project Name: LC-LOGGER
(2). Build Target: Android 1.5
(3). Application Name: Life Cycle Logger
(4). Package Name: android.logger
(5). Create Activity: Logger
2. 覆寫onXX()方法
    執行「Source」功能表「Override/Implement methods…」命令,覆寫onDestroy、onPause、onRestart、onRestoreInstanceState、onResume、onSaveInstanceState、onStart及onStop方法
3. 使用Log函式記錄適宜之訊息
    在每一個onXX方法最後加上Log.d()函式,例如:
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.d("SSWU", "onDestroy");
   }
4. 以除錯模式執行程式
5. 切換到「Debug」環境配置,觀察LogCat窗格內容

按下LogCat窗格「+」圖示則可設定訊息過濾器(Log filter),例如只要顯示被標示"SSWU"標籤的記錄,方便觀察Activity狀態變化時記錄的LOG訊息。

4 則留言:

  1. 在"Paused"狀態下可能回到"Runnig"狀態或進入"Stopped"狀態,但一直測試不出在什麼情況下activity會由"Paused"狀態回到"Runnig"狀態, 如有同道測試出來, 請告知

    回覆刪除
  2. 可參考此篇文章
    http://cheng-min-i-taiwan.blogspot.com/2010/05/activityrunningpausepauserunning.html

    回覆刪除
  3. 我的測試結果:
    啟動另一專案, 原專案會->paused->stopped; 按Back鍵後由stopped回到running;
    也許同一專案activity切換時才會有paused回到running情形, 改天再測試看看

    回覆刪除
  4. 測試同一專案由Activity 1啟動Activity 2, 結果如下:
    1. 如果Activity2立即finish(), 則Activity1狀態為running->pasued-->running
    2. 如果Activity2等按鈕後再finish(), 則Activity1狀態為running->pasued-->stopped-->running

    回覆刪除