![](/img/trans.png)
[英]App crashing when 2nd (or subsequent) call to camera intent is fired on Samsung Galaxy Tab 4 7.0
[英]Samsung Galaxy Tab 7.0 restarts app on return from camera intent
我的代码在越来越小的设备(摩托罗拉Xoom,三星Galaxy Player 4.0,Kyocera Digno)上按预期工作,但对于三星Galaxy Tab 7.0,在启动ACTION_IMAGE_CAPTURE
意图并拍照后,当应用返回onDestroy()
调用,然后是onCreate()
, 然后调用onActivityResult()
,最后再次调用onDestroy()
和onCreate()
,这当然是不可取的 - 只应调用onActivityResult()
。
可能的线索:
如果需要更多信息或代码示例,请与我们联系。
编辑:问题已缩小到方向更改。 根据Karthik的回答,设置android:configChanges="orientation"
解决问题。 唯一的问题是,我的应用程序支持xlarge屏幕上的方向更改。 此设置会在这些设备上中断此功能。 我已经尝试使用android:configChanges="@string/config_changes"
并根据屏幕大小提供不同的字符串,但现在我收到“安装错误:INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION”。 根据这个, Android Activity,如何用Java代码覆盖manifest的android:configChanges? ,无法以编程方式设置它。 我唯一的选择是手动处理我的应用中的所有方向更改吗?
我发现我的应用程序重新启动的原因是因为设备在启动相机应用程序时耗尽内存,并且操作系统回收了我的主要活动。 这不会是一个问题,除了我有一个基于片段的布局和一些片段初始化正在onCreate()
,无论savedInstanceState。 这导致自动片段恢复被丢弃,并使应用程序看起来像从一开始就重新启动,而实际上它只是试图恢复。
例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// add main menu -- WRONG!
MainMenuFragment mainMenu = new MainMenuFragment();
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
ft.add(R.id.contents, mainMenu);
ft.commit();
if (savedInstanceState != null) {
// <restore state>
}
else {
// <initialize stuff>
}
}
为了解决这个问题,我在savedInstanceState不为null时跳过了Fragment初始化,并确保在onSaveInstanceState()
正确保存状态并在onCreate()
恢复,并实现onActivityResult()
的正常处理。
例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// <restore state>
}
else {
// <initialize stuff>
// add main menu -- CORRECT!
MainMenuFragment mainMenu = new MainMenuFragment();
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
ft.add(R.id.contents, mainMenu);
ft.commit();
}
}
你是对的,这是由于方向的改变。 相机在Galaxy Tab中以横向模式工作。
因此,您可以将android:configChanges="orientation"
添加到最明显文件中的<activity>
标记。
这可以解决您的问题。 从相机返回时不会调用onDestroy()
和onCreate()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.