■ 基本操作 啟動: oncreate onstart onresume back: onPause onStop onDestroy home: onPause onStop home後的啟動(未銷毀): onRestart onStart onResume 已銷毀後的啟動:onCreate on ...
■ 基本操作
啟動: oncreate onstart onresume
back: onPause onStop onDestroy
home: onPause onStop
home後的啟動(未銷毀): onRestart onStart onResume
已銷毀後的啟動:onCreate onStart onresume
橫縱屏???: onSaveInstanceState onPause onStop onDestroy onRestoreInstanceState onCreate onStart onResume
■ 物理切割
可見階段: onStart onRestart onStop (可視的獲取與失去)
前臺階段: onResume onPause (焦點的獲取與失去)
其他階段: onCreate onDestroy
http://blog.chinaunix.net/uid-24410388-id-3855498.html
■ 過程詳解
OnCreate(state)
啟動時。被銷毀後再啟動時。
交換到後臺,一定時間內回到前臺不會被銷毀。
橫縱屏切換,預設是系統強制銷毀並重建
OnSaveInstanceState
系統未經你許可,並且可能或者說容易 被系統銷毀activity的場合,會調用該方法。系統的責任來提供機會讓你保存你的數據
例: HOME 啟動其他activity 電源閉屏 橫縱屏切換
如果我們沒有覆寫onSaveInstanceState()方法, 此方法的預設實現會自動保存activity中的某些狀態數據, 比如activity中各種UI控制項的狀態.。android應用框架中定義的幾乎所有UI控制項都恰當的實現了onSaveInstanceState()方法,因此當activity被摧毀和重建時, 這些UI控制項會自動保存和恢復狀態數據. 比如EditText控制項會自動保存和恢復輸入的數據,而CheckBox控制項會自動保存和恢覆選中狀態.開發者只需要為這些控制項指定一個唯一的ID(通過設置android:id屬性即可), 剩餘的事情就可以自動完成了.如果沒有為控制項指定ID, 則這個控制項就不會進行自動的數據保存和恢復操作。
↑ 應該只適用於類似屏幕橫縱屏切換的這種自動重創動作。剛測試了一下,確實是這樣的,指定id則可以自動保存重建,否則不可以.
有時候在onPause前調用,有時候在onPause後調用。
OnSaveInstanceState在需要空出記憶體給當前activtiy的時候執行。
onPause是不可見的時候被調用。
onRestoreInstanceState
可能成為現實,的確被銷毀的場合才會被調用。與save非1v1模式。參數也會傳遞到oncreate(意味著先於oncreate),可由oncreate進行還原。
經典例,編輯簡訊的時候打游戲應用了,或者來了電話,半個小時後簡訊activity已被銷毀。重建時候簡訊還原。
橫豎屏切換時候activity的生命周期?
1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次
3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法