Android 摄像头意图内存泄漏,无活动结果

Android 摄像头意图内存泄漏,无活动结果,android,android-camera-intent,Android,Android Camera Intent,我遇到了一个问题,在拍摄完照片后,当你点击“取消”而不是“确定”时,使用意图捕捉图像会导致内存问题。单击“取消”或“返回”时,不会返回ActivityResult。相反,它似乎只是将图像保存在缓存中,然后重新启动相机活动。问题是,在第三张或第四张图片上,它使应用程序崩溃,因为它没有返回活动结果,所以我不知道如何处理内存泄漏 我正在使用此代码来启动当前的意图 static Uri m_CapturedImageURI; void TakePhoto() { try

我遇到了一个问题,在拍摄完照片后,当你点击“取消”而不是“确定”时,使用意图捕捉图像会导致内存问题。单击“取消”或“返回”时,不会返回ActivityResult。相反,它似乎只是将图像保存在缓存中,然后重新启动相机活动。问题是,在第三张或第四张图片上,它使应用程序崩溃,因为它没有返回活动结果,所以我不知道如何处理内存泄漏

我正在使用此代码来启动当前的意图

static Uri m_CapturedImageURI;
    void TakePhoto()
    {
        try
        {
            String fileName = "temp.jpg";
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            m_CapturedImageURI = getContentResolver().insert
                    (MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, m_CapturedImageURI);

            startActivityForResult(takePictureIntent, 1);
        }

        catch (Exception e) { Log.d("Exception:", e.toString()); e.printStackTrace(); }
    }
但我也尝试过这段代码,直接从android的开发者部分找到:

即使这样,复制和粘贴也会产生同样的问题,即不返回活动结果,最终在3-4张图片后崩溃


有人能给我指出正确的方向吗?

像这样保存图像路径:

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {

    if(mImageCaptureUri!=null)
        savedInstanceState.putString("camera_image", mImageCaptureUri.toString());

    super.onSaveInstanceState(savedInstanceState);
}
并从以下位置检索图像路径:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {

    if (savedInstanceState != null) {
        if (savedInstanceState.containsKey("camera_image")) {
            mImageCaptureUri = Uri.parse(savedInstanceState.getString("camera_image"));
        }
    }

    super.onRestoreInstanceState(savedInstanceState);
}

只有当用户转到camera intent并且在他捕获图像时,当用户从camera intent返回时,承载camera intent的活动才会被破坏或重新创建,才会发生此问题

重复问题这不是那个问题的重复。这是关于调整位图大小的。阅读问题,它不会返回活动结果,因此不会收集位图。您需要做的是,当用户在打开相机之前单击相机按钮时,只需检查内存空间并执行相应的操作。问题来自拍照、点击取消、拍照、点击取消,拍照,而不返回呼叫活动。仅当我保持在相机中,拍照,然后取消,然后拍照,然后取消时才会发生。这意味着我不会再回到主持活动了。它似乎需要的是在每张照片之后清除相机的缓冲区。我只是不知道该怎么做。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {

    if (savedInstanceState != null) {
        if (savedInstanceState.containsKey("camera_image")) {
            mImageCaptureUri = Uri.parse(savedInstanceState.getString("camera_image"));
        }
    }

    super.onRestoreInstanceState(savedInstanceState);
}