为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼啦一阵风 2019-10-19 14:23:49
我正在进行两个活动(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)被销毁了请对此发表您的看法。提前致谢
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

启动相机需要大量内存。因此,在内存不足的设备上,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);

    }


查看完整回答
反对 回复 2019-10-19
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-10-19
  • 3 回答
  • 0 关注
  • 483 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信