从相机返回后活动被杀死

时间:2013-09-18 09:54:45

标签: android camera galaxy

在我的应用程序中,我调用系统摄像头拍照,然后在onActivityResult中处理结果。它曾经工作,但现在我的呼叫活动有时会被杀死, 有时它运作良好。我需要大局,所以我必须使用intent.putExtra(MediaStore.EXTRA_OUTPUT, output),如果没有这个(比如使用意图数据来获取位图),它可以正常工作。 拍摄照片后,点击“确定”按钮,我需要它返回活动 启动相机,但有时它工作正常,有时父活动完成。搜索之后,我设置android:alwaysRetainTaskState="true",但这不起作用。 我的系统是Galaxy S I9000,我也在其他手机上测试过,但效果很好。 有谁知道为什么? 这是我的代码

  private void startTakePhoto(){
    App.fileNameWithPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + System.currentTimeMillis()+".jpg";
    File file = new File(App.fileNameWithPath);
    Uri output = Uri.fromFile(file);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
    boolean flag = BaseUtil.hasImageCaptureBug();
    System.out.println(flag);
    //intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileNameWithPath)));
    //BaseUtil.saveImagePath(App.fileNameWithPath, this);
    startActivityForResult(intent, REQUEST_TAKE_PHOTO);
}
It like this :
I want is 
1. A  start B (stack: A,B)
2. B start camera activity and wait For Result (stack:A,B,camera) 
3. save picture,return B activity (stack: A,B)

but on step 3, it not return to B,but A.
It seems like B is finished by the system, why?

1 个答案:

答案 0 :(得分:1)

http://developer.android.com/reference/android/app/Activity.html 原因是因为Android中的内存管理。据我所知,你的手机有大约100mb的免费操作记忆,如果你的活动不在前台,它可以被摧毁。这就是为什么你应该实现一些活动方法来启动它是onPause,onDestroy和Resume方法。只需将所有信息保存在Bundle中,然后继续启动Activity。