橫豎屏切換時候 activity 的生命周期?
1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次
3、設置Activity的android:configChanges="orientationkeyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法結論:
1.虛擬機和真機驗證結果不同
2.不同版本系統驗證結果不同
3.高版本(API
&>12)需要加入screenSize屬性,不然設置configChanges還是會重建
本次參加的運動員有:
真機:小米5s(API23),Nexus5(API24)
虛擬機:API10,API24
不設置 android:configChanges
API24虛擬機執行onConfigurationChanged方法,然後重建Activity
API10的虛擬機直接重建Activity
APi23的小米5s真機直接重建Activity
設置android:configChanges="orientation"
API24虛擬機執行onConfigurationChanged方法,然後重建Activity
API10的虛擬機執行onConfigurationChanged方法,不再重建Activity
APi23的小米5s真機直接重建Activity
設置android:configChanges="orientation|screenSize"
都只執行onConfigurationChanged方法,不重建Activity
設置android:configChanges="orientation|keyboardHidden"
API24虛擬機執行onConfigurationChanged方法,然後重建Activity
API10的虛擬機執行onConfigurationChanged方法,不再重建Activity
APi23的小米5s真機直接重建Activity
設置android:configChanges="orientation|keyboardHidden|screenSize"
都只執行onConfigurationChanged方法,不重建Activity
在默認情況下(不設置android:configChanges)時,切換橫豎屏,系統回調:
onSaveInstanceState()onPause()onDestroy()然後重新生成一個你得Activity實例,再次調用:
onCreate() :注意此時savedInstanceState參數不為null,值為前一個生命周期在onSaveInstanceState中保存的數據onStart()onResume()如果想實現所有activity橫屏,可以設置所有activity繼承一個父類,這個父類應該如何編寫,讓子activity只執行一遍
建議看看《pro android 2》這本書,很詳細。
推薦閱讀:
※國內ROM哪些功能是原生Android不解鎖、Root做不到的?
※Windows Phone 8.1 更新是否大幅縮小了與 iOS 和 Android 的差距?
※CM(CyanogenMod)團隊為什麼可以解決那麼多機型的適配?
※安卓適配為何比windows難?
※努比亞高配星空灰 華為榮耀v9和一加3T高配槍灰色這3款手機選哪一款?