Android横竖屏切换的生命周期
關(guān)于Android手機(jī)橫豎屏切換時(shí)Activity的生命周期問題,網(wǎng)上有很多相似的文章,大多數(shù)都是說明在豎屏切換橫屏?xí)rActivity會重啟一次,而在橫屏切換豎屏?xí)rActivity會重啟兩次。
我本身不太理解這樣設(shè)計(jì)的意義,并且覺得新版本會解決這個(gè)問題,所以做了一項(xiàng)測試,測試環(huán)境為Android 7.0模擬器。
測試首先創(chuàng)建一個(gè)新的Activity,并在其各個(gè)生命周期方法內(nèi)打印日志,并執(zhí)行如下操作得到結(jié)果:
在targetSdkVersion的值大于12時(shí)
Activity啟動
I/System.out: onCreate I/System.out: onStart I/System.out: onResume豎屏切換為橫屏
I/System.out: onConfigurationChanged I/System.out: onPause I/System.out: onSaveInstanceState I/System.out: onStop I/System.out: onDestroy I/System.out: onCreate I/System.out: onStart I/System.out: onRestoreInstanceState I/System.out: onResume橫屏切回豎屏
I/System.out: onConfigurationChanged I/System.out: onPause I/System.out: onSaveInstanceState I/System.out: onStop I/System.out: onDestroy I/System.out: onCreate I/System.out: onStart I/System.out: onRestoreInstanceState I/System.out: onResume配置android:configChanges="orientation|screenSize"后,豎屏切換為橫屏
I/System.out: onConfigurationChanged配置android:configChanges="orientation|screenSize"后,橫屏切回豎屏
I/System.out: onConfigurationChanged在targetSdkVersion的值小于或等于12時(shí)
Activity啟動
I/System.out: onCreate I/System.out: onStart I/System.out: onResume豎屏切換為橫屏
I/System.out: onConfigurationChanged I/System.out: onPause I/System.out: onSaveInstanceState I/System.out: onStop I/System.out: onDestroy I/System.out: onCreate I/System.out: onStart I/System.out: onRestoreInstanceState I/System.out: onResume橫屏切回豎屏
I/System.out: onConfigurationChanged I/System.out: onPause I/System.out: onSaveInstanceState I/System.out: onStop I/System.out: onDestroy I/System.out: onCreate I/System.out: onStart I/System.out: onRestoreInstanceState I/System.out: onResume配置android:configChanges="orientation"后,豎屏切換為橫屏
I/System.out: onConfigurationChanged配置android:configChanges="orientation"后,橫屏切回豎屏
I/System.out: onConfigurationChanged總結(jié)
可以發(fā)現(xiàn)新版本Android設(shè)備上的運(yùn)行結(jié)果和網(wǎng)上的結(jié)論并不完全相同,在橫豎屏切換時(shí),都會調(diào)用一次onConfigurationChanged,并重啟Activity一次,具體的生命周期為:
I/System.out: onConfigurationChanged I/System.out: onPause I/System.out: onSaveInstanceState I/System.out: onStop I/System.out: onDestroy I/System.out: onCreate I/System.out: onStart I/System.out: onRestoreInstanceState I/System.out: onResume在targetSdkVersion的值小于或等于12時(shí),配置android:configChanges="orientation"
在targetSdkVersion的值小于或等于12時(shí),配置android:configChanges="orientation|screenSize"
可以做到攔截Activity的重新創(chuàng)建:
后續(xù)
將會對過去版本的Android設(shè)備做相應(yīng)的測試,來驗(yàn)證得到結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的Android横竖屏切换的生命周期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Leetcode][第17题][JAV
- 下一篇: Unity3D研究院之Android同步