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开发中,大多APP可能根据实际情况直接将APP的界面方向设死了,或竖屏或横屏。但是,我们还是会遇到横...
    yoosir阅读 50,809评论 7 112
  • Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是有时候也不尽然,通常在设置里面我...
    Lost_Robot阅读 11,792评论 1 5
  • Android横竖屏切换小结Android横竖屏切换小结(老样子,图片啥的详细文档,可以下载后观看 http://...
    4528283108ee阅读 7,662评论 0 1
  • 以下是复制别人的文章过来的,目的是保留下这个方法,便于今后查阅使用,该文章不会用于任何商业用途,该文章的出处:ht...
    鸿蒙一笑万物开阅读 12,740评论 0 3
  • 杯子太小 换大碗 洒盐,消炎 倒满,开水解渴 一整晚的腹痛、焦渴 就等这一碗盐开水 来来来 喝干这一碗 昨天已干瘪...
    天马谣阅读 1,592评论 0 2