0

应用程序在 android 3.2 中运行良好,但在 android 3.1 中无法运行

我的应用程序处于横向模式,我有明显的说法

 <activity
             android:name=".GameActivity"
             android:screenOrientation="landscape"
             android:configChanges="orientation|keyboardHidden"
       >

并覆盖了我在横向模式下设置的 onConfigchanges。

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    }

现在的问题是当我在 3.1 中运行我的应用程序时,发生了一些奇怪的问题。当我按下主屏幕时..使其处于 potrait 模式并再次返回时,我的应用程序启动了活动,但显示了我当前活动的半屏和其他 isingleTop 活动。

我当前活动的半屏和旧活动的顶部

很奇怪,我不知道为什么会这样

4

1 回答 1

0

请参阅有关android:configChanges的有关 value的文档screenSize

当前可用的屏幕尺寸已更改。这表示当前可用尺寸相对于当前纵横比的变化,因此当用户在横向和纵向之间切换时会发生变化。但是,如果您的应用程序以 API 级别 12 或更低级别为目标,那么您的 Activity 始终会自行处理此配置更改(此配置更改不会重新启动您的 Activity,即使在 Android 3.2 或更高版本的设备上运行时也是如此)。

所以在 android 3.2 setting:android:configChanges="orientation"被有效地忽略,因为 screenSize 导致活动的重新创建。在 android 3.1 上,当方向更改时,您会阻止重新创建 Activity。
所以删除orientation价值应该没问题,显然自动重新创建活动对你有好处。或者增加screenSize价值并为两个版本中都存在相同的错误感到高兴。

这是 android 的一种有趣的错误,即在不同方向的活动之间切换会导致具有固定方向的活动的配置发生变化。

于 2012-08-14T14:13:12.000 回答