2010年9月16日 星期四

Android Activity 的啟動與結束

撰寫 Android 專案時發生一些在離開應用程式時 crash 的狀況,反覆檢查 Activity 的 onDestroy() 就是看不出什麼異樣,後來 TRACE 才發現問題出在 onPause() 裡面的一行 code,在此筆記一下 Activity 啟動與結束的流程

當一個 Activity 被啟動時會經過以下 Method

onCreate() -> onStart() -> onResume()


當一個名為 N 的 Activity 呼叫另一個名為 P 的 Activity 時

N.onPause() -> P.onCreate() -> P.onStart() -> P.onResume() -> N.onStop()


當在 P Activity 且按下硬體 Back 鍵時

P.onPause() -> N.onReStart() -> N.onStart() -> N.onResume() ->
P.onStop() -> P.onDestory()


當一個 Activity 呼叫 this.finish() 時

onPause() -> onStop() -> onDestory()


當一個 Activity 被 Android Dalvik 回收再重新啟動時

onCreate() -> onStart() -> onResume()


以上規則適用於大部份 Android 平台的裝置,但有些例外,目前已經試到的是 HTC Legend 就是個特例,HTC Legend 在 Activity_A 上面做 StartActivity(Activity_B) 之後,會執行 Activity_A 自已的 OnDestroy(),並且在一個 Activity.finish() 時常常不會自動 back,必須手動按硬體 back 鍵,這些都是在不同裝置上測試時必須注意的細節。

沒有留言:

張貼留言