Android屏幕方向的改变在平板电脑上有不同的行为

Android屏幕方向的改变在平板电脑上有不同的行为,android,screen,orientation,tablet,Android,Screen,Orientation,Tablet,我有以下活动: android:screenOrientation="portrait" 和代码: if(blah blah blah) this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 在活动onCreate中。 1.在智能手机上进行测试时,“setRequestedOrientation”会导致销毁活动,并以所需的屏幕方向再次创建。 2.在平板电脑设备上测试时,此代码仅运行一次活动。在“

我有以下活动:

android:screenOrientation="portrait"
和代码:

if(blah blah blah)
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
在活动onCreate中。 1.在智能手机上进行测试时,“setRequestedOrientation”会导致销毁活动,并以所需的屏幕方向再次创建。 2.在平板电脑设备上测试时,此代码仅运行一次活动。在“setRequestedOrientation”之后,它将继续执行,而不会再次销毁和创建活动。在onCreate中启动没有调试程序或没有断点的代码时会发生这种情况。如果我在onCreate函数中停止,我会在日志中看到,再次销毁和onCreate。 如何利用平板电脑捕捉特定情况

更新: -如果关闭“方向锁定”,平板电脑会出现问题。若“方向锁定”已启用,则该程序的工作方式与智能手机中的相同

更新2: -是否可以将首选屏幕方向设置为整个应用程序。因此,当活动开始了解所需的方向时。这将不需要调用“setScreenOrientation”并避免第二次创建活动。

您可以设置

<activity ActivityName = "test_activity"
android:configChanges="orientation">
</activity>

在android清单文件中。它将不允许在方向更改时重新启动活动,但OnConfiguration更改将被称为normaly。
稍后,您可以在OnConfiguration Change中获取DisplayOrientation并设置所需内容。

否。。无法为整个应用程序设置首选屏幕方向。。。相反,您应该只在各自的活动中调用setScreenOrientation

在花了一整天的时间处理这个问题后,我在我的应用程序中做了以下更改: 1.每个活动/没有第一个/都声明为android:screenOrientation=“behind”。 2.在第一个活动中,我使用用户选择的模式/从我的菜单设置首选屏幕方向。 3.只有当用户在我的菜单选项中更改了模式时,我才调用setRequestedOrientation


这导致活动只创建一次。最后:)

谢谢。我知道这条路。谷歌强烈建议不要这样做。