Android Pie 9.0定向问题

Android Pie 9.0定向问题,android,android-9.0-pie,Android,Android 9.0 Pie,在onCreate()中使用setRequestedOrientation()几秒钟后,我得到的是手机方向,而不是应用程序方向。 例如:方向设置为横向(使用setRequestedOrientation-in onCreate)如果手机处于纵向,则我的应用程序处于纵向的时间比应用程序进入横向的时间短几秒钟 使用:在onCreate()中设置RequestedOrientation 添加:在AndroidManifest中更改配置时的方向 注意:这只发生在清单中的Android Pie 9.0中

在onCreate()中使用setRequestedOrientation()几秒钟后,我得到的是手机方向,而不是应用程序方向。

例如:方向设置为横向(使用setRequestedOrientation-in onCreate)如果手机处于纵向,则我的应用程序处于纵向的时间比应用程序进入横向的时间短几秒钟

使用:在onCreate()中设置RequestedOrientation 添加:在AndroidManifest中更改配置时的方向

注意:这只发生在清单中的Android Pie 9.0中

 <activity
        android:name="Your Activity Name"
        android:screenOrientation="landscape" />

解决这个问题的唯一方法是在清单中指定屏幕方向。如果您需要能够以编程方式指定屏幕方向,那么在不显示初始错误方向的情况下,没有什么好方法可以实现它

这是因为在调用
onCreate(…)
时,大多数活动都已初始化(使用默认值或来自XML的值)。当您调用
setRequestedOrientation()
时,这将作为活动原始配置的更改,并且每当主线程完成其当前工作并开始执行命令时,都将对其进行处理

例如,当您从自定义主题设置状态栏的颜色时,您可能会遇到类似的延迟。如果在清单中的活动上应用主题,则一旦活动打开,状态栏就会自动着色。但是,如果在
onCreate()
中应用主题,则状态的前一种颜色将在短时间内可见,直到应用主题中提到的颜色为止


最后要注意的一件事……根据我的经验,主题示例&甚至可能是这个定向案例在某种程度上也依赖于设备,可能还依赖于Android版本。清单中的设置总是在活动显示之前应用于该活动,但是,有些设备可能会以如此之快的速度应用
onCreate
中要求的内容,以至于你不会注意到它。

这也会以相反的方式发生:从我的应用程序设置中,我将方向模式设置为纵向固定,如果我进入一个不同的活动,并且手机处于横向,有几秒钟,我的应用程序也处于横向,而不是纵向。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);