繁体   English   中英

Android相机位图内存泄漏

[英]Android camera Bitmap memory leak

我编写了一个简单的代码来拍照,然后使用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);
        }
    }
}

这里是链接:

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

在这种方法中,我给出了一种有效的方法来从Camera ,然后在ImageView显示它。

希望对您有帮助。

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

您应该加载图像的缩小版本而不是完整尺寸。 我什至惊讶于您加载超过2048 * 2048像素的图像时不会出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM