记一次转屏导致的Android生命周期问题

该MainActivity的配置如下,由于我希望该MainActivity在运行过程中只会创建一个实例,因此我限制了它的启动模式为singleTask.运行的Android系统版本为KitKat(4.4.4)


记一次转屏导致的Android生命周期问题_第1张图片
未知原因导致的转屏

要使Android4.0以上的版本在转屏后不重新执行Activity的生命周期,原

android:configChanges="orientation|keyboardHidden"

需要修改为

android:configChanges="orientation|keyboardHidden|screenSize"
记一次转屏导致的Android生命周期问题_第2张图片
修正android:configChanges

当然这样做也有副作用,那就是转屏后,界面无法发生重绘.因此建议在xml中就锁定页面的横竖屏模式.

android:screenOrientation="landscape|portrait"

另未证实的:
在比较高的版本还需要设置捕捉更改的权限—— Android.permission.CHANGE_CONFIGURATION

你可以通过以下ADB命令来实现转屏以方便测试
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1
其中i可以取值为 0,1,2,3 分别代表不同的方向

链接
关于onConfigurationChanged以及onConfigurationChanged 未被调用的问题

你可能感兴趣的:(记一次转屏导致的Android生命周期问题)