【问题标题】:Android camera Bitmap memory leakAndroid相机位图内存泄漏
【发布时间】:2026-01-06 10:25:02
【问题描述】:

我编写了一个简单的代码来拍照,然后使用 ImageView 将其显示到屏幕上。但是,有一些内存泄漏,我没有发现。 (拍照后内存从 7 MB 变为 39 MB)

public class MainActivity extends Activity {

    public String gl;
    ImageView viewImage;
    Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button) findViewById(R.id.myButton);
        viewImage = (ImageView) findViewById(R.id.myImageView);
    }

    public void launchCamera(View view) {//Button onClick method
        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
        gl = f.getAbsolutePath();
        i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
        startActivityForResult(i, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1 && resultCode == RESULT_OK) {
            Bitmap bitmap;
            BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
            bitmap = BitmapFactory.decodeFile(gl, bitmapOptions);
            viewImage.setImageBitmap(bitmap);
        }
    }
}

【问题讨论】:

    标签: android image bitmap android-camera


    【解决方案1】:

    这里是链接:

    https://*.com/a/32245332/3702862

    其中我给出了从Camera 拍照然后在ImageView 中显示的有效方法。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      图片在内存中可能很大,每个像素在内存中占用 32 位。

      您应该加载图片的缩小版本,而不是完整尺寸。 我什至很惊讶您在加载超过 2048*2048 像素的图像时没有收到错误。

      【讨论】: