我正在启动一个媒体意图以拍照。在用户拍照并返回到上一个界面后,整个应用程序已重新启动。
由于这种情况并非总是发生,我认为当设备内存不足时,我的应用程序进入了后台并被Android杀死。
有没有办法防止我的应用程序进入后台?
谢谢!
由于这种情况并非总是发生,我认为当设备内存不足时,我的应用程序进入了后台并被Android杀死。
有没有办法防止我的应用程序进入后台?
谢谢!
这是在Android中的正常行为,所有当前不可见的活动(在onStop
之后)可能会被系统在内存不足时无通知地销毁(即onDestory
)。
我们的应用程序在一个测试设备上经常出现内存问题,无论我们的应用程序如何。
您通常可以通过使用意图打开相机,然后旋转设备(从竖屏到横屏)来重新创建这种行为,这也将杀死并重新创建您的应用程序。
为了解决这个问题,您需要扩展onSaveInstanceState
并在onCreate
中使用savedInstanceState
参数,将一些重要信息(比如“我们正在从相机获取图片中”)从你被销毁的实例传递到新的实例中。
我认为有两个选项:
当您启动媒体意图时,请使用以下方法而不是startActivity(intent)
startActivityForResult(intent, REQUEST_CODE); //private int REQUEST_CODE = 232
当启动的活动完成后,您的调用活动将被启动。您需要使用以下函数来处理此问题
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
//Perform your task
}
}
开始这个活动需要重写以下方法
@Override
public void onBackPressed() {
Intent intent = new Intent();
setResult(REQUEST_CODE, intent);
super.onBackPressed();
}
startActivityForResult() 是一种特殊的启动活动方式,用于执行特定任务并获取所需结果。被调用的活动将返回数据。
您可以使用 putExtra() 和 getExtra 方法在意图中发送和接收两个活动之间的数据。
这将希望解决您的问题。 如果您有疑问,请发表评论。如果可能,请分享您的代码,以便更清晰地了解。