Android横竖屏切换的生命周期

横竖屏切换生命周期方法:执行的顺序一致,且只执行一遍。不会出现网上说的横屏切到竖屏执行两遍的问题

一,默认情况

android3.2之前的版本,生命周期方法执行顺序如下

onSaveInstanceState(Bundle outState)
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onResume()

android3.2版本开始,生命周期方法执行顺序如下

onPause()
onSaveInstanceState(Bundle outState)
onStop()
onDestroy()
onCreate()
onStart()
onResume()

二,在清单文件里给Activity配置了android:configChanges="orientation"

1,android3.2之前的版本,生命周期方法执行顺序如下

onConfigurationChanged(Configuration newConfig)

2,android3.2版本开始,生命周期方法执行顺序如下
a,如果targetSdkVersion<=12

onConfigurationChanged(Configuration newConfig)

b,如果targetSdkVersion>12,不起作用

onPause()
onSaveInstanceState(Bundle outState)
onStop()
onDestroy()
onCreate()
onStart()
onResume()

c,如果targetSdkVersion>12,还得配置screenSize,也就是android:configChanges="orientation|screenSize"

onConfigurationChanged(Configuration newConfig)

google在android3.2中添加了screensize改变的通知,在转屏的时候,不仅是orientation发生了改变,screensize同样也发生了改变

总结:

1,默认情况下横竖屏切换,
a,3.2之前的版本先执行onPause(),再执行onSaveInstanceState(Bundle outState)
b,3.2版本开始先执行onSaveInstanceState(Bundle outState),再执行onPause()

2,配置android:configChanges="orientation",防止横竖屏切换重新创建Activity
a,如果targetSdkVersion<=12,所有版本都有效
b,如果targetSdkVersion>12,3.2版本开始需要多加个screenSize
3,keyboardHidden这个属性是指硬键盘的状态,和软键盘没有关系,看网上都有带这个参数,正常情况下是多余的。

参考
https://developer.android.google.cn/guide/topics/manifest/activity-element.html#config
http://blog.csdn.net/xiaole0313/article/details/51537809

你可能感兴趣的:(Android横竖屏切换的生命周期)