Activity橫豎屏切換生命週期

YuanchaoLi發表於2019-03-24

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
複製程式碼

相關文章