22

如果更改手机或模拟器的方向,我会在 LogCat 中得到以下输出:

04-09 11:55:26.290: INFO/WindowManager(52): Setting rotation to 1, animFlags=0
04-09 11:55:26.300: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/1 nav=3/1 orien=2 layout=18}
04-09 11:55:26.460: INFO/UsageStats(52): Unexpected resume of client while already resumed in client
04-09 11:55:26.579: INFO/SearchPosition(807):  Activity is paused
04-09 11:55:26.689: INFO/SearchPosition(807):  Activity is resuming

SearchPosition 是显示的活动。Activity is paused 写在 onPause 方法中,Activity 正在恢复在 Activity 的 onResume 方法中。

我用谷歌搜索了一些错误消息,但我不完全理解它的含义。我认为这可能意味着更改屏幕方向后旧的 Activity 没有被正确销毁。

它是否正确?如果是,是什么导致错误?如果这不正确?这个输出是什么意思?

4

3 回答 3

12

将此添加到 manifest.xml 中的活动声明中:

android:configChanges="orientation"

例子:

<activity android:name=".MyApp" android:configChanges="orientation" android:label="@string/app_name">

https://developer.android.com/guide/topics/manifest/activity-element.html#config

对于带有 QWERTY 键盘的设备

android:configChanges="keyboardHidden|orientation"
于 2010-04-09T17:12:41.613 回答
4

AdroidManifest.xml 文件中android:configChanges="orientation"的示例用法:

 <activity android:name=".Sound"
            android:configChanges="orientation"
                  android:label="@string/app_name" android:debuggable="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
于 2011-01-07T00:36:52.010 回答
3

我首先在这里偶然发现,在阅读了 leventix 在他的评论中提供的链接后,我不禁认为这两个答案实际上都是错误的。然后我发现了早先的问题 3851363,这是关于同一问题的。该消息是良性的。

如果我错了,请纠正我,但我理解配置选项 android:configChanges="orientation" 仅应在您想自己处理配置更改而不是通过典型的 onDestroy/onCreate 循环时使用。

在正常情况下,当方向改变时,android-8 似乎会不必要地产生有问题的错误。

于 2011-05-31T12:56:18.150 回答