每当调用startactivityforresult时,Android都会杀死我的应用程序

Ser*_*lal 2 android android-intent android-lifecycle android-activity

好吧,在我的应用程序中,我正在使用Android的默认摄像头和图库,其中startActivityforResult为;

Intent i = new Intent("android.intent.action.PICK",
                       MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/*");
startActivityForResult(i, this.SELECT_PICTURE);
Run Code Online (Sandbox Code Playgroud)

我也能够捕获onActivityResult.但是,如果内存很少并且我开始这个活动,我经历过该系统正在杀死我的父活动,即使活动返回一个值,我也丢失了所有的局部变量(并再次调用onCreate()).只应再次调用onResume().

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

由于Android不会在前台杀死应用程序,我还可以使用此功能吗?我认为我的问题与问题几乎相似.


除了Yahel提供的解决方案之外,使用以下方法也可以.

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

@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
   super.onRestoreInstanceState(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)

Yah*_*hel 9

您需要仔细阅读必读之前的代码文章:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

如果内存不足,你可以并且将会被Android杀死.但它会被通知,并且有一个非常明确的方法来处理这个问题.

这就是Bundle savedInstanceState你所有活动中存在的原因:public void onCreate(Bundle savedInstanceState)

在您的应用程序暂停期间,您应该保存重新创建应用程序所处状态所需的一切,并且在应用程序的创建过程中,您应该检查是否要使用完整的savedInstanceState返回并从那里恢复您的应用程序.

祝好运.