大家都知道,如果想解决横竖屏切换时,activity不重新创建,需要在manifest中配置 android:configChanges="orientation|keyboardHidden"属性,当然在api>13的时候,你需要额外添加一个参数,就是 screenSize ,不添加这个,在api 13以上的手机是不会生效的。

结论

(1)设置 android:configChanges="orientation" 和不设置这个属性,这两个效果是一样的,activity都是重新创新

(2)横屏切竖屏,以及竖屏切回横屏,这两个也是一样的(如下总结),不会出现网上说的横屏切回竖屏时,生命周期执行两遍的问题

1)重新创建activity的生命周期

a)2.3上:onSaveInstanceState->onPause->onStop->onCreate->onStart->onRestoreInstanceState->onResume

b)4.0上(3.2我没测试,只测试了4.0的):onPause->onSaveInstanceState->onStop->onCreate->onStart->onRestoreInstanceState->onResume

2)不重新创建activity,只会调用 onConfigurationChanged

(3)targetSdkVersion会影响生命周期,targetSdkVersion在12及以下的话,设置了 android:configChanges="orientation|keyboardHidden" ,在机器上都不会重新创建activity,只会调用 onConfigurationChanged,如果设置targetSdkVersion>12的话,只在sdkVersion<=12的机器上有效果,>12的机器上activity还是会重新创建(需要加上screenSize才有效果)

(4)android2.3和android4.0的生命周期不一样,2.3是先onSaveInstanceState,后onPause,4.0是先onPause,后onSaveInstanceState

测试结果(注:以下结果中的不重新创建activity和重新创建均代表结论中的内容)

(1)设置 android:configChanges="orientation"和不设置这个属性,生命周期表现为重新创建activity

(2)设置 android:configChanges="orientation|keyboardHidden",在2.3上表现为不重新创建activity,4.0如下

a)android:targetSdkVersion<="12",生命周期表现为不重新创建activity

b)android:targetSdkVersion>"12",表现为重新创建activity

(3)设置 android:configChanges="orientation|keyboardHidden|screenSize",在2.3和4.0上都表现为不重新创建

(4)在4.0机器上,当targetSdkVersion<12,生命周期也是先onSavedInstanceState()再onPause(),按照targetSdkVerison的来。

更多相关文章

  1. android EditText设置不可写
  2. Android(安卓)--- Activity生命周期
  3. android“设置”里的版本号
  4. Android四大基本组件介绍与生命周期
  5. Android之菜单总结
  6. 在Fragment中设置控件点击方法,执行失败。
  7. Android(安卓)闹钟管理类的使用
  8. Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
  9. Android使用Retrofit进行网络请求

随机推荐

  1. Android(安卓)和 SQLite 基本数据类型
  2. android-logging-log4j - Logging with L
  3. Android(安卓)Studio下对资源进行分包
  4. Android在WebView上构建Web应用程序
  5. 申请Android(安卓)Maps API Key,以及出现
  6. android 使用intent传递参数实现乘法计算
  7. 如何获取Android唯一标识(唯一序列号)
  8. Android(安卓)检测SD卡应用
  9. 【Android(安卓)Studio使用教程6】Execut
  10. 调整recovery界面菜单字体大小