Android 8.0/8.1 screenOrientation适配
一.问题
在适配完Android9.0,即target升级到28后运行app在8.0设备上,发现crash
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
at android.app.Activity.onCreate(Activity.java:1081)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:278)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
at android.app.Activity.performCreate(Activity.java:7372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
... 9 more
可以看到是Activity启动时,onCreate()方法里产生了一场,并且后Activity展示方向有关
二.原因
1.Android 8.0
于是我们跟踪一下Android8.0系统的Activity源码
protected void onCreate(@Nullable Bundle savedInstanceState) {
//target>26(8.0),且Activity方向模式为固定方向
if (getApplicationInfo().targetSdkVersion > O && mActivityInfo.isFixedOrientation())