Activity橫豎屏切換生命週期
網上大多部落格結論,清單檔案Activity未配置configChanges屬性,切到橫屏後,再切回豎屏時,會走兩遍onPause——onSaveInstanceState——onStop——onDestroy——onCreate——onStart——onRestoreInstanceState——onResume 生命週期方法。本人在Android系統不同版本經過測試發現,實際情況和網上大多部落格描述不同,特記錄下實際測試情況。有誤解之處,還望指出,共同探討。
Android8.0及以上
- 沒配置configChanges屬性,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onPause
onSaveInstanceState
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
複製程式碼
- 只要隨意配置了configChanges屬性,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onConfigurationChanged
複製程式碼
Android7.0、7.1.1
- 沒配置configChanges屬性和沒配置全configChanges屬性是orientation|keyboardHidden|screenSize,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onConfigurationChanged
onPause
onSaveInstanceState
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
複製程式碼
- 配置了configChanges屬性是orientation|keyboardHidden|screenSize,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onConfigurationChanged
複製程式碼
Android6.0及以下
- 未配置configChanges屬性和未配置全configChanges屬性是orientation|keyboardHidden|screenSize,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onPause
onSaveInstanceState
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
複製程式碼
- 配置了configChanges屬性是orientation|keyboardHidden|screenSize,切到橫屏和再切到豎屏,生命週期呼叫順序都表現為:
onConfigurationChanged
複製程式碼