1、本机测试环境

android 4.3,
android:targetSdkVersion : 12,13,17

2、关于横竖屏切换的Activity生命周期的错误说法

初学Android,在学习Activity的生命周期时,自己在本机实验时,发现了一些不合理的情况。
那就是在横竖屏切换时,Activity并不会像网上大多数人所说的那样:

  • 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次.
  • 设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次.
  • 设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.

我自己写了个测试程序,见前面我写的Activity生命周期(一、二)。之后根据我的结果,又查了很多资料,终于知道了为什么出现不同结果。
得到下面结果:

  • 不设置android:configChanges时,切屏会重新调用各个生命周期(详细说明见Activity生命周期(一)),但不管是切横屏,还是竖屏,都是一次。
  • 设置android:configChages=”orientation”时,结果和不设置一样,仍然是重新调用,而且横竖屏都是一次。
  • 设置为android:configChanges=”orientation|keyboardHidden”时,结果如下:
    a. android:targetSdkVersion <= 12时,不会重新创建
    b. android:targetSdkVersion > 12时,和不设置一样,重新创建。
    c. 该点是网上获得的资料,没测试。在4.0以下的是不重建,而4.0以上的则为a,b所叙述。本测试机器为4.3。
  • 设置Activity的android:configChanges=”orientation|keyboardHidden|screenSize”时,不重新创建Activity。
  • 最后补充一点说明,重新创建是指,当前你启动了一个Actvity(onCreate–>onStart–>onResume),此时切换屏幕时,会销毁当前Activity,重新生成一个。
    (即onPause–>onStop–>onDestory–>onCreate–>onStart–>onResume)

3、总结

在现在android普遍都是>4.0的版本下,以前的结论基本上都是错误的。出现这种情况,是因为很多人都是盲目的复制别人的结论、文章,而重来不会自己验证下而导致的。
所以还是不要人云亦云,还是要自己多实践才行。

更多相关文章

  1. android测试工具小总结
  2. Android中startService的使用及Service生命周期
  3. 亲测Android横竖屏切换小结,带测试结果
  4. Android - 常见错误的解决方法
  5. android音乐播放器Service的生命周期分析
  6. [android]初始化代码仓库时出现“OSError: [Errno 2] No such fi
  7. Android--用Pull解析器将对象解析成xml文件及单元测试
  8. Java工程中调用Android库出现“Stub!”错误
  9. Android Process生命周期

随机推荐

  1. Android中动态改变控件的大小的一种方法
  2. Android(安卓)Resource介绍和使用(一)
  3. Android的消息机制Handler
  4. Android重难点解析——面试中可能被问到
  5. Android自学笔记:分析onXXX事件监听器中的
  6. Android(安卓)ButterKnife入门到放弃
  7. React-Native之Android(6.0及以上)权限申
  8. Android(安卓)DPAD not enabled in AVD
  9. android的wake_lock介绍
  10. Android的ANR详解(原因和方案)