Activity橫豎屏切換, 生命週期變化

Activity橫豎屏切換生命週期變化


1. 新建一個Activity並把各個生命週期都打印(未配置該Activity 的android:configChanges)

2. 運行Activity, 得到如下打印信息

onCreate
onStart
onResume


3. 切換橫屏時, 打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


4. 再次切回豎屏時,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


總結1:Activity未設置android:configChanges時,切屏時會重新調用各個生命週期,且橫屏時會調用一次,切豎屏時會調用兩次;

5. 修改AndroidManifest.xml, 把該Activity添加android:configChanges="orientation", 然後重新運行,然後切換橫屏,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


6. 切換豎屏,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged


總結2:Activity設置android:configChanges="orientation", 切屏時會重新調用各個生命週期,且橫、豎屏只會調用一次

7. 修改該Activity的android:configChanges="orientation|keyboardHidden", 然後重新運行,切換橫屏時,打印
onConfigurationChanged

8. 切換豎屏時,打印
onConfigurationChanged
onConfigurationChanged

總結3:設置Activity 的android:configChanges="orientation|keyboardHidden", 切屏時不會重新調用各個生命週期,只會執行onConfigurationChanged方法











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章