嗯,在我的应用程序中,我正在使用默认摄像头和Android的图库,其中startactivityforreSult为;
Intent i = new Intent("android.intent.action.PICK",
                       MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/*");
startActivityForResult(i, this.SELECT_PICTURE);
.

我也能够捕捉到争吵。但是,如果内存很低并且我开始此活动,我经历了系统正在杀死我的父活动,即使活动返回值,我丢失了所有我的本地变量(并且再次调用oncreate())。只能再次调用OnResume()。

我尝试了几次,我很确定它与内存问题有关。如果已成功执行足够的内存过程。如何防止这种行为?

因为Android不杀死前景中的应用程序,我还可以使用此功能吗?我认为我的问题几乎与 Yahel 提供的解决方案外,使用以下方法可以使用。

@Override
public void onSaveInstanceState(Bundle savedInstanceState){
   super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
   super.onRestoreInstanceState(savedInstanceState);
}
.

有帮助吗?

解决方案

您需要良好的阅读必须读取的必备文章: http://developer.android.com/reference/android/app/activity.html#ActivityLifecycle

如果内存低,则您可以且将被Android杀死。但它将被通知,并且有一种非常明确的方式处理此方法。

这是您在所有活动中存在的属性的原因:Bundle savedInstanceState

在您的应用程序的持续期间,您应该保存所有需要重新创建的所有应用程序所在的状态,并且在您的应用程序的oncreate期间,您应该检查您是否已将完整的SavedInstancestate返回并从那里恢复您的应用程序。

祝你好运。

其他提示

您是否考虑使用某种类型的持久存储?在调用新意图之前,保存在持久存储(共享首选项,DB,文件系统等)中保存的数据,具有某种重建标志。然后,如果活动调用OnCreate并且标志UP,则可以恢复以前的活动状态。确保在不需要时清除重建标志,应该在onresume中。

编辑:

onsaveinstancestate似乎是活动到活动的数据的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top