android Activity生命周期

onCreate:Activity啟動時調用的第一個方法。在此方法中有一個參數,即Bundle,在首次啟動時,這個參數為null,當程序由於內存的原因而被殺掉的時候,如果用戶在onSaveInstanceState方法中做瞭相應的狀態保存的操作的話,那個當他再次重新啟動的時候,這個Bundle就包含瞭先前在onSaveInstanceState方法中保存的狀態信息,以便Activity回到先前的狀態。

onStart:當用戶對Activity可見時,此方法調用。

onResume:在此方法中主要用於接收Activity數據和進行一些列的初始化操作。當Activity到達棧頂的時候,即將成為前臺進程時,此方法被調用,雖然這一個時刻Activity肯能還不為用戶所見,但這裡是獲取資源的最佳場所。

onPause:當另一個Activity被移至棧頂的時候,當前Activity會收到它已在棧中被下移的通知,此時調用onPause方法。onPause方法是Activity在後臺最後一次能夠有機會進行清理工作、釋放無需資源的地方。Activity的onPause方法必須要盡快的執行完成,因為前臺的Activity必須要等到它執行完成之後返回後才能啟動。當當前Activity失去焦點隻有部分界面可見的時候,也會調用onPause方法。

onStop:當另一個Activity被恢復而完全遮住當前Activity界面的時候,onStop被調用。

onDestroy:Activity生命周期的最後一個方法,當調用finish方法或由於內存原因被系統殺死後會依次調用onPause——>onStop——>onDestroy方法,來結束Activity生命周期。

註意:可以根據isFinishing方法來判斷是由於調用瞭finish方法而結束Activity還是由於內存原因被系統殺死的。

    通過調用finish方法結束的Activity會從Activity棧中彈出,而由於系統內存原因結束的Activity不會從棧中彈出,依然會保留在棧中,因為在用戶點擊返回按鈕的時候,它還 是有可能需要在恢復到前頁面的。

 

為瞭避免Activity對象被銷毀,應該盡可能的在onPause方法中釋放盡可能多的資源,那麼轉入後臺時被銷毀的可能性就越低。

 

當Activity由於內存原因被銷毀的時候,可以通過使用onSaveInstanceState方法將狀態信心保存在一個Bundle對象中,當Activity恢復時此Bundle會做為參數傳入到onCreate方法中,以便界面回復到之前的狀態。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *