橫豎屏切換時activity生命週期變化的總結
阿新 • • 發佈:2019-02-18
activity的生命週期變化想必大家都耳熟能詳,但是橫豎屏切換時activity生命週期變化很多人肯定還很迷糊,最近在網上查詢的資料總結的大都不全面,最後在部落格園上看到一哥們總結的挺好, so,自己也寫了個demo測試了一下,發現橫豎屏切換時activity生命週期不僅跟清單檔案AndroidManifest.xml中android:configChanges屬性有關,而且還跟手機系統的版本有關,因為在Android 4.0及其以上系統上,還跟程式的targetSdkVersion設定有關。下面放出自己的測試結果:
一、Android 2.3
1、清單檔案中不配置android:configChanges屬性或者配置了android:configChanges="orientation",橫豎屏切換時會先銷燬當前activity然後重新建立它,而且還會呼叫onSaveInstanceState和onRestoreInstanceState方法,如下圖:
2、清單檔案中配置android:configChanges="orientation|keyboardHidden",橫豎屏切換時不會重新建立activity,而是會呼叫onConfigurationChanged方法
3、清單檔案中配置android:configChanges="orientation|keyboardHidden|screenSize",橫豎屏切換時不會重新建立activity
二、Android 4.0及以上
1、清單檔案中不配置android:configChanges屬性或者配置了android:configChanges="orientation",橫豎屏切換時的變化跟Android 2.3是一樣的,都會先銷燬當前activity然後重新建立它,如圖所示:2、清單檔案中配置android:configChanges="orientation|keyboardHidden"
(1) 當android:targetSdkVersion<="12"時,橫豎屏切換時不會重新建立activity
(2) 當android:targetSdkVersion>"12"時,橫豎屏切換時會重新建立activity
3.清單檔案中配置android:configChanges="orientation|keyboardHidden|screenSize",不管android:targetSdkVersion為多少,橫豎屏切換時都不會重新建立activity
最後補充一點,我們通過設定android:screenOrientation屬性可以指定當前activity的螢幕方向。
android:screenOrientation="portrait" 縱向
android:screenOrientation="landscape" 橫向