上篇介紹 Android 4個基本模組以及目錄結構,本篇提供簡單的偵錯方式以及針對 Activity 再做更深入的研究,經過實機測試,可以證明程序的確是照著我們的寫法來運作,若是想進一步得到程序中的數值,就必須使用其他方法來測試,可以使用 Log 類別來達成, Log 提供 5 個簡單的方法來追蹤程序的進行,我們把上篇的 MainActivity.java 改為
MainActivity.java
1: package com.example.helloworld;
2:
3: import android.os.Bundle;
4: import android.util.Log;
5: import android.app.Activity;
6:
7: public class MainActivity extends Activity {
8:
9: @Override
10: public void onCreate(Bundle savedInstanceState) {
11:
12: Log.v("Trace Log", "Log1");
13:
14: super.onCreate(savedInstanceState);
15: setContentView(R.layout.activity_main);
16:
17: Log.i("Trace Log", "Log2");
18:
19: }
20:
21: }
第 4 行匯入 Log 類別,讓我們在後面的程式碼中可以使用
第 12 行 Log.v("Trace Log", "Log1"); 第 1 個參數為 Tag (標籤名稱), 第 2 個參數為顯示內容
第 17 行 Log.i("Trace Log", "Log2"); i 和 v 的差別為在 LogCat 中顯示的顏色不同
改完程式碼之後,執行程序吧,執行程序後點擊 Eclipse 中的 LogCat 視窗來查看顯示內容
可以看到顯示的 Text 相當多,因為預設的情況不會過濾顯示的 Text 內容,我們可以在左邊的 Save Filter 加入自訂的過濾器,可以命名過濾器的名稱以及過濾的項目等等,
設定完過濾器之後再執行,可以看到顯示的 Text 變為 2 個
這就是簡單的 Trace Log 的方式
接下來我們再對 Activity 進一步的研究,查看 Android API 可以發現 Activity 本身有 20 ~ 30 種方法可以使用, 其中重要的就是掌控其生命週期的方法, 分別有 onCreate( ) , onStart( ) , onResume( ) , onPause( ) , onStop( ) , onRestart( ) ,onDestroy( ), 對應不同的生命週期狀態,請參考 Android API 提供的生命週期圖,為了方便觀察其變化我們將 MainActivity.java 再次修改
MainActivity.java
1: package com.example.helloworld;
2:
3: import android.os.Bundle;
4: import android.util.Log;
5: import android.app.Activity;
6:
7: public class MainActivity extends Activity {
8:
9: final String tt= "Trace Log";
10:
11: @Override
12: public void onCreate(Bundle savedInstanceState) {
13:
14: super.onCreate(savedInstanceState);
15: setContentView(R.layout.activity_main);
16:
17: Log.i(tt, "onCreate");
18: }
19:
20: public void onStart(){
21: super.onStart();
22:
23: Log.i(tt, "onStart");
24: }
25:
26: public void onResume(){
27: super.onResume();
28:
29: Log.i(tt, "onResume");
30: }
31:
32: public void onPause(){
33: super.onPause();
34:
35: Log.i(tt, "onPause");
36: }
37:
38: public void onRestart(){
39: super.onRestart();
40:
41: Log.i(tt, "onRestart");
42: }
43:
44: public void onStop(){
45: super.onStop();
46:
47: Log.i(tt, "onStop");
48: }
49:
50: public void onDestroy(){
51: super.onDestroy();
52:
53: Log.i(tt, "onDestroy");
54: }
55:
56: }
57:
在第 9 行我使用 tt 來代替 "Trace Log" ,這樣之後的追蹤 Log, 只要輸入 tt, 或是 Ctrl + v 就能完成,接著在 20 , 26 , 32 , 38 , 44 , 50 行分別覆寫方法,並加入追蹤,執行程序看看吧,執行程序後可以發現依序印出, onCreate -> onStart -> onResume
接著點選手機的 Home 鍵跳離程序,會印出 onPause -> onStop -> onDestroy , 此時程序並沒有停止
手機上再點擊程序,會發現印出 onCreate -> onStart -> onResume, 和開始程序時相同,由此可知只要我們在在這些掌控生命週期的方法中寫入需要的功能,就可以加強整個程序完整性,如跳出程序之前儲存資料,程序運作中若有來電的處理等等
0 意見:
張貼留言