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方法