Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(2)
2014-04-19 14:17
471 查看
配置了configChange属性之后,横竖屏切换时不用再杀死和重新启动Activity了,想想Android系统设置这个属性的初衷,横竖屏切换时需要加装不同的变量信息,因此杀死当前Activity启动切屏后的Activity是一个理所应当的过程,但是不够灵活,有些状态下,我们不希望横竖屏切换时Activity被杀死,因此configChange这个属性就能发挥一些作用了,我们只需要在onConfigurationChanged()这个函数中配置横竖屏切换后所需要的信息就够了。然而这种方法虽然简便,但容易出错和引发一些意外的效果,因此应谨慎使用。
//以下在manifest中已进行配置
//横竖屏切换
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onCreate()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854 //竖屏切换到横屏,可见此时已经获取到了横屏的配置信息,但是由于不会重新加载Activity的用户信息,我们需要自己在此处配置横屏需要的信息
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480 //横屏切换到竖屏
//竖屏从灭屏到亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
//横屏的灭屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480//同没有配置信息时一致,只不过先竖屏的过程被onConfigurationChanged()取代了。
D/vi (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480
//横屏的亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854
//以下在manifest中已进行配置
//横竖屏切换
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onCreate()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854 //竖屏切换到横屏,可见此时已经获取到了横屏的配置信息,但是由于不会重新加载Activity的用户信息,我们需要自己在此处配置横屏需要的信息
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480 //横屏切换到竖屏
//竖屏从灭屏到亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
//横屏的灭屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_PORTRAIT--width = 480//同没有配置信息时一致,只不过先竖屏的过程被onConfigurationChanged()取代了。
D/vi (17324): ---onPause()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onSaveInstanceState()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onStop()--orientation = ORIENTATION_PORTRAIT--width = 480
//横屏的亮屏
C:\Users\Administrator>adb logcat -s vi
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
D/vi (17324): ---onRestart()--orientation = ORIENTATION_PORTRAIT--width =480
D/vi (17324): ---onStart()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onResume()--orientation = ORIENTATION_PORTRAIT--width = 480
D/vi (17324): ---onConfigurationChanged()--orientation = ORIENTATION_LANDSCAPE--width = 854
相关文章推荐
- Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)
- Android横竖屏切换和灭屏亮屏时Activity的生命周期探究
- Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(2)
- android点滴(12) -- 1. Android横竖屏切换时,Activity的生命周期的变化(面试题)
- android 4.0以上横竖屏切换不销毁activity,不重新走生命周期,只调用onConfigurationChanged
- 整理 Android 横竖屏切换时候activity的生命周期
- Android Activity 生命周期、横竖屏切换
- android activity的生命周期 以及横竖屏切换
- 【黑马Android】(08)activity生命周期/横竖屏切换的生命周期/任务栈的概念/广播接收者ip拨号器/进程的优先级&为什么使用服务
- android手机横竖屏切换时Activity的生命周期:
- 横竖屏切换时重构Activity生命周期的问题---android:configChanges的用法
- Android Activity 横竖屏切换的生命周期
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
- Android Activity 横竖屏切换的生命周期
- Android中横竖屏切换时Activity的生命周期
- android横竖屏切换时候Activity的生命周期
- Android--横竖屏切换时候activity的生命周期
- Android: 横竖屏切换时候重新走Activity生命周期
- Android - 数据库自动更新,横竖屏切换,系统控件样式,Fragment添加到Activity,Fragment生命周期,缓存,获取/清除缓存
- Android--横竖屏切换时候activity的生命周期