網頁

2010年7月14日 星期三

Android軟體生命週期

Android 主要是使用在手機上,所以應用程式必須要對於程式中斷做出相對應的政策,才是好的程式,要不然電話一來,程式就當機,或是引響到手機通話功能,最糟的是,當程式離開了,還有一個無窮回圈一值在背景執行,導致手機很快就沒電,這樣的設計都是很不好的。

所以了解Android的生命週期很重要,我想要以CASE的方式介紹生命週期
了解生命週期之前必須先了解Android 並不會關閉程式,執行程式的時候中途按下 BACK 或是 MENU離開程式回到桌面時,程式依然會保留在記憶體內沒有被釋放,所以才會有task kill 這類程式來強制關閉應用程式。

心法:
畫面失去焦點 啟動pause 回到焦點 resume
畫面被蓋掉 啟動 Stop 畫面回來 START




1.當程式啟動的時候執行三個流程
OnCreat->OnStart -> OnResume

2.這時候按下Back 回到畫面 執行三個流程
OnPaus-->OnStop -->OnDestory

3.啟動另外一個ACTIVE

舊Active pause --> 新Active on Creat --> 新Active onStart --> 新Active onResume 舊Active Stop

4.程式執行時按下電源鈕讓手機進入休眠
Active pause

5.程式由休眠再度打開電源
Active Resume


6.程式執行時電話來了
Active onPause-->Active OnStop

8.接聽後掛掉電話
ReStart -->Start-->Resume

9.手機簡訊來了
不會暫停程式

10.手機撥來只響一聲就掛掉
Active onPause--> Resume

11螢幕切換橫向縱向,基本上會先強制關閉程式,然後再度讀取所以會
onPause-->OnStop-->OnDestory-->OnCreat->OnStart -> OnResume



值得注意的是
onStop OnPause 程式的所有變數與物件都沒有被釋放,
都還是保持原來的這還好處理。

有時候程式裡會有兩三個Active 切換的時候會呼叫OnCreat
當 OnCreat的時候可怕的事情發生了,所有變數都回復到預設值,
雖然他並沒有被OnDestory但是他被OnCreat了,
所有的變數重新再度被定義為初始狀態,這是值得注意的。

沒有留言: