只要调用StartactivityForresult,Android就会杀死我的申请
-
13-11-2019 - |
题
嗯,在我的应用程序中,我正在使用默认摄像头和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似乎是活动到活动的数据的方式。
不隶属于 StackOverflow