2014年3月19日 星期三

Android:活動(Activity)的生命週期

資料來源:摩刻部落─Android開發筆記-Activity的生命週期

Activity是使用者直接能看到的畫面比如撥打電話,拍照,發送電子郵件或查看地圖,它是採堆疊制,意即越晚出現的Activity會放在越上面,所以使用者看到的畫面即是最晚出現的Activity,當最後出現的Activity被關閉,則會顯示第二晚出現的Activity,即是我們在操作Android手機時,若按下"返回"鍵,就會回到上一個畫面的意思。


Activity的生命週期如圖所示:


onCreate()
Activity第一次被呼叫時進入。此時系統會建立Activity的畫面(setContentView(R.layout.該Activity相對應的使用者介面xml);),並且可以透過Bundle等物件進行初始化設定
onStart()
讓Activity能被使用者看見
onResume()
將Activity移到堆疊的最上層,讓使用者可以和Activity互動。
onPause()
當有簡訊、電話、Toast、AlertDialog等
另外一個Activity進行時,進入onPause()的狀態,停止對螢幕的存取能力。如果畫面沒有轉移,則回到onResume();若畫面轉移到新的activity時,則進入onStop()。
onStop()
當使用者看不見此Activity的畫面時產生。如果這個Activity無法透過返回鍵回復,則進入onDestroy();反之則繼續停留在Stop狀態,當使用者返回此頁面時,則進入onRestart()。
onRestart()
重新啟動Stop狀態的Activity
onDestroy()
當Activity被銷毀時執行。銷毀的原因有幾種:Activity不會再被使用、程式呼叫finish()、系統因記憶體不足而銷毀Stop程序。要確認Activity是否被銷毀可使用 isFinishing() 方法
這些控制生命週期的方法可以在Eclipse選單 Source > Override/Implement Methods 中找到。
在正常情況下,記憶會保存使用者輸入的資料,但是在記憶體不足時,系統會銷毀Stop狀態的Activity,此時使用者輸入的資料會消失。此外,若是系統設定在程式運行中改變(例如螢幕方向、鍵盤狀態和語言),則Activity會立即銷毀並重建(執行onDestroy()後接著執行onCreate())。因此如果我們寫的程式不希望使用者輸入的資料因為種種原因而消失,則必需要在onPause()的時候將資料儲存起來,並且在onCreate()將資料讀出,重新顯示在畫面上
資料來源:摩刻部落─Android開發筆記-Activity的生命週期

沒有留言:

張貼留言