Android--橫豎屏切換時候activity的生命週期

橫豎屏切換時候activity的生命週期
程序運行後,默認是豎屏,生命週期如下:
onCreate–>
onStart–>
onResume–>
按crtl+f12切換成橫屏時
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
在屏幕切換之前,系統會銷燬activity A,在屏幕切換之後系統又會自動地創建activity A,所以onSaveInstanceState一定會被執行。
總而言之,onSaveInstanceState的調用遵循一個重要原則,即當系統“未經你許可”時銷燬了你的activity,則onSaveInstanceState會被系統調用,這是系統的責任,因爲它必須要提供一個機會讓你保存你的數據(當然你不保存那就隨便你了)。
至於onRestoreInstanceState方法,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成對的被調用的,onRestoreInstanceState被調用的前提是,activity A“確實”被系統銷燬了,而如果僅僅是停留在有這種可能性的情況下,則該方法不會被調用,例如,當正在顯示activity A的時候,用戶按下HOME鍵回到主界面,然後用戶緊接着又返回到activity A,這種情況下activity A一般不會因爲內存的原因被系統銷燬,故activity A的onRestoreInstanceState方法不會被執行。
另外,onRestoreInstanceState的bundle參數也會傳遞到onCreate方法中,你也可以選擇在onCreate方法中做數據還原。
詳細參見:http://blog.csdn.net/pathfinder1 … /02/26/6209416.aspx

a、不設置Activity的android:configChanges時,切屏會重新調用各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次。
b、設置Activity的android:configChanges=”orientation”時,切屏還是會重新調用各個生命週期,切橫、豎屏時只會執行一次。
c、設置Activity的android:configChanges=”orientation|keyboardHidden”時,切屏不會重新調用各個生命週期,只會執行onConfigurationChanged方法。

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章