您的位置:首页 > 移动开发 > Android开发

android 横竖屏切换时的activity生命周期

2012-07-24 00:51 513 查看
在网上搜了关于横竖屏幕切换的问题,结果发现有人说是设置android:configChanges="orientation"放置avtivity的重建,有的却说不行,于是自己测试,做如下总结:

源代码就不贴出来了,就是简单的各个生命周期函数里简单打印信息。

1.默认情况下,即不设置android:configChanges,从竖屏转到横屏,

07-03 17:07:42.041: INFO/System.out(26071): onCreate()
07-03 17:07:42.041: INFO/System.out(26071): onStart()
07-03 17:07:42.051: INFO/System.out(26071): onResume()
07-03 17:07:50.319: INFO/System.out(26071): onSaveInstanceState()
07-03 17:07:50.319: INFO/System.out(26071): onPause()
07-03 17:07:50.329: INFO/System.out(26071): onStop()
07-03 17:07:50.329: INFO/System.out(26071): onDestroy()
07-03 17:07:50.369: INFO/System.out(26071): onCreate()
07-03 17:07:50.369: INFO/System.out(26071): onStart()
07-03 17:07:50.369: INFO/System.out(26071): onRestoreInstanceState()
07-03 17:07:50.369: INFO/System.out(26071): onResume()

红色部分就是从竖屏到横屏时打印出来的信息,说明android系统会先调onSaveInstanceState()保存当前的状态数据后,按照顺序最后完成onDestroy()。然后才启动一个新的生命周期,并调onRestoreInstanceState()方法获取之前保存的数据。

之后再从横屏转会竖屏,结果还是一样,没有出现网上说的切换横屏会调用生命周期各个函数一次,而切换竖屏执行两次的情况。

2.设置android:configChanges="orientation"

07-03 17:19:58.310: INFO/System.out(26164): onCreate()
07-03 17:19:58.310: INFO/System.out(26164): onStart()
07-03 17:19:58.310: INFO/System.out(26164): onResume()
07-03 17:20:00.982: INFO/System.out(26164): onConfigurationChanged()
07-03 17:20:02.784: INFO/System.out(26164): onConfigurationChanged()
07-03 17:20:04.926: INFO/System.out(26164): onConfigurationChanged()
07-03 17:20:06.388: INFO/System.out(26164): onConfigurationChanged()

红色的四行信息是我重复切换横竖屏四次打印出来的,也就是说每切换一次,系统会调用一次onConfigurationChanged()一次,但是并不会重建新的activity生命周期,

自己在网上也搜到有人提到只设置android:configChanges="orientation"是无法达到这种效果的观点是不一样的

当然android:configChanges="orientation|keyboardHidden"出现的情况也是跟上面一样。

至于为什么会出现不同的观点,就不知道了,可能是跟android的版本有关吧。我的代码工程用的是2.2版本的。手机上装的是2.3.3版本的,HTC,G12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: