Android纠正Activity横竖屏切换的生命周期的错误
16lz
2021-12-04
阅读更多 文章来源: http://www.itnose.net/detail/6251003.html
更多文章: http://www.itnose.net 1、本机测试环境
更多文章: http://www.itnose.net/type/85.html
更多文章: http://www.itnose.net 1、本机测试环境
android 4.3,
android:targetSdkVersion : 12,13,17
初学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)
在现在android普遍都是>4.0的版本下,以前的结论基本上都是错误的。出现这种情况,是因为很多人都是盲目的复制别人的结论、文章,而重来不会自己验证下而导致的。
所以还是不要人云亦云,还是要自己多实践才行。
更多文章: http://www.itnose.net/type/85.html
更多相关文章
- 浅谈android:clipChildren属性
- Android动画设置interpolator插值器
- 两分钟彻底让你明白Android(安卓)Activity生命周期(图文)!
- LinearLayout 内部控件居中
- GDB + gdbserver 远程调试android native code
- android中Content Provider
- Android下实现一个手机监控摄像头
- 与屏幕有关的设置:禁止横竖屏切换;横竖屏切换不重启Activity;动态设
- android broadcastReceiver生命周期及两种应用——四大组件之Bro