Android纠正Activity横竖屏切换的生命周期的错误
程序员文章站
2022-07-05 21:38:31
...
文章来源:http://www.itnose.net/detail/6251003.html
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