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(安卓)MediaPlayer学习笔记
  2. android:configChanges问题
  3. Android-View-Attribute
  4. android 将程序设置为app2sd
  5. android imageView详解
  6. Android~使用Service还是Thread
  7. android:clipToPadding的使用
  8. Android中使用webview和web页面的一些交互
  9. Android中startService的使用及Service生命周期

随机推荐

  1. 在Linux里设置用户环境变量的方法
  2. 来点基础的--诡异的极客们的符号--流、管
  3. Linux Box上运行哪个SQL服务器?
  4. linux中创建公私钥
  5. 报告节选3:Linux比例近半 操作系统混战虚
  6. 继续问linux下c问题
  7. 嵌入式Linux系统工程师系列之ARM920T的MM
  8. find . -type f ! -name "*.o" 排除某类
  9. 解决找不到动态库libpthread.so
  10. PHP通过SSH操作远程服务器(linux)