Android:调用“相机意图”后活动被破坏

我正在进行两个活动(A1,A2)。A1呼叫A2,从A2呼叫相机意图如下


launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);   

startActivityForResult(launchIntent,CAMERA_REQUEST);

它打开相机,我可以拍照。但是,一旦我单击保存按钮(s3中的刻度按钮),就会出现问题,而不是调用我的onActivityResult,而是调用A2的onDestroy方法。我在onActivityResult fn中要做的逻辑很少。


我已经在Stackoverflow上阅读了一些关于此的文章,但我无法从中获得有用的输出。我在第二个Activity(A2)中有这样的清单


android:configChanges="keyboardHidden|orientation|locale"

android:screenOrientation="portrait

注意:在HTC One X中,我的onActivityResult fn被调用,但是在我的S3中,第二个Activity(A2)被销毁了


请对此发表您的看法。提前致谢


呼啦一阵风
浏览 484回答 3
3回答

德玛西亚99

启动相机需要大量内存。因此,在内存不足的设备上,android系统会关闭在后台运行的Activity,因此会调用onCreate()。由于此光路,您提供的光路变为空,因此您将无法获取已保存的图像。解决方法是在系统破坏您的活动时保存光路径,然后再次恢复它。@Override    public void onSaveInstanceState(Bundle outState) {        // TODO Auto-generated method stub            outState.putString("photopath", photopath);        super.onSaveInstanceState(outState);    }    @Override    protected void onRestoreInstanceState(Bundle savedInstanceState) {        // TODO Auto-generated method stub        if (savedInstanceState != null) {            if (savedInstanceState.containsKey("photopath")) {                photopath = savedInstanceState.getString("photopath");            }        }        super.onRestoreInstanceState(savedInstanceState);    }并且如果您正在Fragment上执行此操作。@Override    public void onSaveInstanceState(Bundle outState) {        // TODO Auto-generated method stub            outState.putString("photopath", photopath));        super.onSaveInstanceState(outState);    }    @Override    public void onViewStateRestored(Bundle savedInstanceState) {        // TODO Auto-generated method stub        if (savedInstanceState != null) {            if (savedInstanceState.containsKey("photopath")) {                photopath = savedInstanceState.getString("photopath");            }        }        super.onViewStateRestored(savedInstanceState);    }

慕尼黑的夜晚无繁华

相机应用程序需要大量内存,并且要释放内存,操作系统必须杀死包括您在内的后台应用程序。这对于所有Android应用程序都是正常的。相机应用返回时将重新创建您的活动。要保留活动状态信息,请覆盖onSaveInstanceState()以存储您的数据,然后将其读回onCreate()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android