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
源代码就不贴出来了,就是简单的各个生命周期函数里简单打印信息。
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
相关文章推荐
- Android: 横竖屏切换时候重新走Activity生命周期
- android横竖屏切换时activity的生命周期
- Android横竖屏切换时候Activity的生命周期
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
- android点滴(12) -- 1. Android横竖屏切换时,Activity的生命周期的变化(面试题)
- Android系统横竖屏切换时候Activity的生命周期
- Android Activity 横竖屏切换的生命周期
- Android横竖屏切换时候的activity的生命周期
- android横竖屏切换时候Activity的生命周期
- Android之Activity在横竖屏切换时的生命周期
- Android 横竖屏切换对Activity生命周期的影响
- Android Activity 生命周期、横竖屏切换
- android横竖屏切换时候Activity的生命周期
- 横竖屏切换时候activity的生命周期 android:configChanges
- Android4.4.2下Activity在横竖屏切换时的生命周期
- Android 横竖屏切换的Activity生命周期演示-面试常问题
- android手机横竖屏切换时Activity的生命周期:
- android横竖屏切换时activity的生命周期
- android4.0.3横竖屏切换时的activity的生命周期
- Android - 数据库自动更新,横竖屏切换,系统控件样式,Fragment添加到Activity,Fragment生命周期,缓存,获取/清除缓存