打开图库时,Android应用会被杀死

时间:2013-12-06 13:57:51

标签: android android-activity

当我在画廊时,当我的应用程序被杀死时,我正试图解决一些神秘的行为。

我有这样的流程:

来自Activity_1我是startActivityForResult Activity_2。从Activity_2开始,我让用户从所需的来源中选择一张图片。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Hint", REQUEST_CODE_SELECT_PICTURE);

有时候当用户在画廊中时(通常在后台运行时有很多应用程序)我的应用程序会被杀死。没有任何警告 - 我的申请流程从流程列表中消失。当用户选择照片时,他可以返回Activity_2,但之前选择的所有图像都会丢失 如果用户在此时按“下一步”,应用应返回Activity_1

Intent data = new Intent();
data.putStringArrayListExtra(EXTRA_PHOTOS, new ArrayList<String>(selectedPictures));
setResult(RESULT_OK, data);
finish();

但看起来没有Activity_1,应用只是重启。没有崩溃,只需重启。用户返回Activity_1,但丢失所有数据。

很难重现并且非常烦人。有没有办法防止这种行为?

2 个答案:

答案 0 :(得分:3)

Android需要资源时会杀死应用程序。 因此,在您的情况下,图库需要更多的资源,Android会杀死您的应用程序。

但是,当您的应用程序发生通知时(通过onPauseonDestory等),您需要通过 onSaveInstanceState() 保存您的应用程序状态并获取它当您的申请返回时,我们会一起回来

答案 1 :(得分:1)

我不能百分百肯定,但这对Android来说听起来很正常。如果实际上有很多应用程序正在运行,那么Android会杀死应用程序,如果它们没有聚焦(活动没有显示)。

这应该通过正确实现活动的生命周期方法来处理。您可以在那里保存状态,并在Android创建活动的新实例后重新创建状态。您可以在此处阅读:http://developer.android.com/reference/android/app/Activity.html