我的代码在越来越小的设备(Motorola Xoom、Samsung Galaxy Player 4.0、Kyocera Digno)上按预期工作,但对于三星 Galaxy Tab 7.0,在启动ACTION_IMAGE_CAPTURE
意图并拍照后,当应用程序返回时onDestroy()
调用,然后是onCreate()
, then onActivityResult()
被调用,finally 被调用,onDestroy()
并且onCreate()
被再次调用,这当然是不可取的 - 只onActivityResult()
应该被调用。
可能的线索:
- Galaxy Tab 7.0 的屏幕尺寸在清单文件中明确不支持(这是我测试过的唯一一个屏幕尺寸不受支持的设备),因此用户可以选择适合屏幕大小或缩放适合大小. 两个 UI 具有相同的(不良)行为。
- 预览图片时,相机活动似乎会切换方向。我的应用程序仅支持纵向模式(编辑:在较小的屏幕上 - 在非 xlarge 屏幕上,它支持方向更改)。也许方向变化正在以某种方式破坏我的活动。
- 我已经尝试从不同的意图(电子邮件意图)启动和返回,并且在这种情况下我的应用程序不会被破坏和重新创建。
如果需要更多信息或代码示例,请告诉我。
编辑:问题已缩小到方向变化。根据 Karthik 的回答,设置android:configChanges="orientation"
解决了这个问题。唯一的问题是,我的应用程序支持 xlarge 屏幕上的方向更改。此设置会破坏这些设备上的此功能。我尝试android:configChanges="@string/config_changes"
根据屏幕大小使用和提供不同的字符串,但现在我收到“安装错误:INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION”。据此,Android Activity,如何用 Java 代码覆盖清单的 android:configChanges?,无法以编程方式设置它。我唯一的选择是手动处理我的应用程序中的所有方向更改吗?