-->

安卓:呼叫相机意向后活动被破坏掉了(Android: Activity getting Destro

2019-08-31 06:10发布

我有两个活动(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做一些逻辑。

我读过的一些#1后对此但是我不能得到that.I有用的输出有我的表现像这样我的第二个活动(A2)

android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait

注:在HTC One X的我onActivityResult FN获取调用,但在我的S3次活动(A2)是被破坏掉了

PLZ分享乌尔这个想法。 提前致谢

Answer 1:

我有同样的疑难问题将是疯了,但最后我找到了解决办法在这里 。 问题是,当你点击“保存”按钮时,相机的活动呼叫改变方向方法,它会破坏并重新创建。 尝试设置

android:configChanges="orientation|screenSize"

在Android清单(不仅是android:configChanges="orientation" ,因为作为建议在这里 ,它不是API级别13或更高的工作)。

它阻止破坏活动,它为我工作。



Answer 2:

启动相机需要大量的内存。 因此,在低内存的Android系统设备关闭活动后台运行,因此的onCreate()被调用。 由于这种photopath你给变空,你不会能够得到保存的图像。

解决方案是拯救photopath而系统摧毁你的活动,然后再恢复它。

@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);
    }

并且如果您是在片段这样做。

@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);
    }


Answer 3:

要确保你没有“不保留活动” Developer设置上,因为它会破坏你离开活动。



Answer 4:

相机应用程序需要大量的内存和释放内存,操作系统有杀后台应用程序,包括你。 这是正常的,所有的Android应用。 您的活动将在相机应用程序返回时重建。 为了保持活动状态的信息,重写onSaveInstanceState()来存储你的数据和读取它们放回onCreate()



Answer 5:

我的活动有,当我打电话相机意图运行多个任务..我有GPS定位的听众,还有更多的任务。

当它从相机意图返回我需要在图像拍摄地点在地图上添加标记。所以,如果用户花了多张图片,它应该显示为每个画面标记..

如果它会破坏我的活动我每次通话摄像头意向的一切,我收到了关于标记和它们的位置都将丢失。而同时,我将不得不再次初始化地图的信息。 这对我的应用程序的一个大问题。

是的,当我走在风景模式下的画面才会发生。 如果我拍摄照片的肖像,一切都很好,到目前为止..

我将尝试使用android:configChanges="orientation|screenSize"作为这里建议..希望这将有助于!



Answer 6:

对我来说,当我能够在开发者模式被称为“ 不保留活动 ”选项发生。 之后我未选中它,而从选择从画廊或从相机应用的图片支持活动将不会重现。



文章来源: Android: Activity getting Destroyed after calling Camera Intent