该MainActivity的配置如下,由于我希望该MainActivity在运行过程中只会创建一个实例,因此我限制了它的启动模式为singleTask.运行的Android系统版本为KitKat(4.4.4)
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTask"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
![](https://img.haomeiwen.com/i1928937/991eb35dd11413be.png)
要使Android4.0以上的版本在转屏后不重新执行Activity的生命周期,原
android:configChanges="orientation|keyboardHidden"
需要修改为
android:configChanges="orientation|keyboardHidden|screenSize"
![](https://img.haomeiwen.com/i1928937/d102655ad2485deb.png)
当然这样做也有副作用,那就是转屏后,界面无法发生重绘.因此建议在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 分别代表不同的方向
网友评论