如轉載請註明出處http://blog.csdn.net/ethanchiu/article/details/19341745
實現生命週期的回調方法
監視生命週期的三種嵌套循環全部的生命週期
在onCreate和onDestroy之間。比如,一個後臺下載線程,在oncreate創建,在ondestory停止。可見的生命週期
在onstart和onstop之間。當啓動一個新的Activity,當前Activity不可見。在此,可以保持一些顯示給用戶的資源,可以在on start註冊broadcast,監測ui的變化,在onstop註銷,當不可見的時候。前端生命週期
在onresume和onpause之間。當一個對話框出現的時候。當內存緊張的時候,onpause是一定會被調用的。onstop和ondestroy可能不會被調用。因此將保存持久化數據放在opause中。當然也要可選擇性的寫,因爲如果耗時,會影響轉到下一個Activity的速度,影響體驗。
保存Activity狀態
不確定之前的Activity是否已經銷燬並且已經重新創建了它,因此希望Activity還是原來的那個。這種情況下,爲了保存Activity的狀態,需要重寫onSaveInstanceState()。注意:有些時候onSaveInstanceState()不一定會調用,比如按了Back按鈕,用戶是想關閉actity,這時候不需要保存Activity狀態。
即使不實現onSaveInstanceState()方法,一些Activity的狀態也會默認還原
tip,默認view是會還原狀態的,但是也可以不還原通過設置android:saveEnabled屬性爲false。
注意:onSaveInstanceState()不能保證被調用,所以只能用它記錄瞬時狀態(UI狀態),不能用來存儲持久化數據。用onPause存儲持久化數據(比如數據庫存儲)。
檢測Activity狀態是否保存的最好方法是,轉化手機屏幕的水平方向,這時Activity會重建。