我有一个应用程序,我只想在肖像模式下使用,所以我定义了
但当我打开硬件QWERTY keyboard(而不是虚拟键盘)时,HTC G1手机出现了问题.我的活动保持在纵向模式,但似乎重新启动并失go 所有状态.HTC Hero版本不会出现这种情况.
我的应用程序相当大,所以我不希望它在键盘打开时重新启动并丢失所有状态.我怎么才能防止这种情况发生呢?
我有一个应用程序,我只想在肖像模式下使用,所以我定义了
但当我打开硬件QWERTY keyboard(而不是虚拟键盘)时,HTC G1手机出现了问题.我的活动保持在纵向模式,但似乎重新启动并失go 所有状态.HTC Hero版本不会出现这种情况.
我的应用程序相当大,所以我不希望它在键盘打开时重新启动并丢失所有状态.我怎么才能防止这种情况发生呢?
Update April 2013: Don't do this. It wasn't a good idea in 2009 when I first answered the question and it really isn't a good idea now. See this answer by hackbod for reasons:
Avoid reloading activity with asynctask on orientation change in android
在你的AndroidManifest中添加android:configChanges="keyboardHidden|orientation"
.xml.这会告诉系统您将自己处理哪些配置更改——在本例中,您什么也不做.
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
有关更多详细信息,请参见开发人员参考configChanges.
然而,您的应用程序可以在任何时候被中断,例如被电话中断,所以您确实应该添加代码来保存应用程序在暂停时的状态.
Update:从Android 3.2开始,您还需要添加"屏幕大小":
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
来自开发人员指南 Handling the Configuration Change Yourself
注意:从Android 3.2(API级别13)开始,"屏幕大小"