阅读更多 文章来源: http://www.itnose.net/detail/6251003.html
更多文章: http://www.itnose.net 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的版本下,以前的结论基本上都是错误的。出现这种情况,是因为很多人都是盲目的复制别人的结论、文章,而重来不会自己验证下而导致的。
所以还是不要人云亦云,还是要自己多实践才行。


更多文章: http://www.itnose.net/type/85.html

更多相关文章

  1. 浅谈android:clipChildren属性
  2. Android动画设置interpolator插值器
  3. 两分钟彻底让你明白Android(安卓)Activity生命周期(图文)!
  4. LinearLayout 内部控件居中
  5. GDB + gdbserver 远程调试android native code
  6. android中Content Provider
  7. Android下实现一个手机监控摄像头
  8. 与屏幕有关的设置:禁止横竖屏切换;横竖屏切换不重启Activity;动态设
  9. android broadcastReceiver生命周期及两种应用——四大组件之Bro

随机推荐

  1. Android(安卓)Studio若干问题
  2. System Permissions—— android系统权限
  3. android stackView
  4. Android文件保存和读取
  5. 【Android(安卓)基础7.1 7.2】AsyncTask
  6. Sending and receiving broadcast messag
  7. android用代码实现圆角背景
  8. Android添加横线和竖线分割界面
  9. Android(安卓)Hello World on IDEA
  10. Android(安卓)升级Android(安卓)X 所需要