开发中遇到一个问题,在相机CameraActivity设置了setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); CameraActivity是横屏展示。
从A Activity(PORTRAIT)打开B CameraActivity,然后,又从B finish到A。 A会执行两次重载。切换两次屏幕(竖,横,竖)。
目前只在华为手机(Android 8.1)发现这个问题。
1、对A Activity 设置了 android:screenOrientation="portrait" ,android:configChanges="keyboardHidden|orientation|screenSize"。不起作用。仍然切换两次屏幕。不知道为什么。
2、解决办法,借鉴了这篇文章 https://www.domon.cn/2018/12/06/Android-8-1-screen-rotation-error/;作者Domon。非常感谢。
3、在A Activity 中进行以下设置
@Override
protected void onResume() {
super.onResume();
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}
@Override
protected void onPause() {
super.onPause();
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}
在 CameraActivity(横屏) 设置
@Override
protected void onDestroy() {
super.onDestroy();
if (android.os.Build.VERSION.SDK_INT >= 27) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}