android開發學習筆記(二)-activity的生命週期

一:activity的生命週期:html

二:created->resumedandroid

當一個應用程序的啓動圖標被用戶點擊後,應用程序開始從Activity的onCreate()方法開始執行。(當有多個activity文件時,執行Manifest文件中指定的主activity文件)。htm

當執行完onCreate()方法後,迅速調用onStart(),onResume()方法,用戶就能夠進行相關的操做.對象

在onCreate()方法中儘可能少執行操做,防止程序運行好久都進入不了界面。blog

三:Resumed->Paused && Paused->Resumed生命週期

當啓動另外一個activity形成部分阻塞時(主activity部分可見),主activity調用onPause()方法進入Paused狀態。當你須要從新回到主activity時,會經過調用onResume()方法回到屏幕並可執行相關操做。內存

一個activity進入Paused狀態後,他有可能回到屏幕,也有可能進入Stopped狀態,而後進入Destryed狀態關閉。資源

當activity進入Paused狀態後,應該在onPause()方法中中止Pause狀態activity的操做,釋放相應的資源,以及用戶期待保存的資源。it

當activity從新回到Resumed狀態時,應該初始化那些在Paused狀態中釋放的資源sed

 

四:Paused->Stopped && Stopped->started

當activity由部分阻塞變成徹底阻塞(activity不可見)後,主activity調用onStop()進入Stopped狀態。當你從新回到主activity時,會調用onRestart()方法.而後迅速調用onResume()方法.

當activity進入stopped狀態時,Activity對象會保存在內存中,當這個activty恢復到resumed狀態時,會調用保存的activity。因此不須要初始化相應的組件。

在onstop()方法中要釋放不須要的資源,而在onRestart()方法中要從新建立釋放的資源。

 

五:destroyed:
1個activity多是正常退出(好比點擊返回按鈕/使用finish()方法退出),也有可能非正常退出(stop狀態長時間不被使用/前臺activity須要更多資源)。

在正常退出時,不會保存相關數據,但非正常退出時會保存相關數據並在下一次建立Activity實例時恢復數據。

被系統用來恢復相關數據而保存的數據叫作instance state。instance state保存在bundle對象中的key-value pairs中。

在activity非正常退出時,會經過onSaveInstanceState() 保存相關的數據到對象Bundle中。在從新建立此activity時,會將bundle對象傳遞給onCreate()  與 onRestoreInstanceState()。經過bundle對象來恢復數據。

 

參考資料:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/index.html.

相關文章
相關標籤/搜索