java.lang.OutOfMemoryError:位图大小超过VM预算

时间:2011-07-15 09:28:59

标签: java android

  

可能重复:
  Android: Strange out of memory issue while loading an image to a Bitmap object

我在AsyncTask中的imageview上加载位图时出现以下错误:

Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget

有任何帮助吗?

2 个答案:

答案 0 :(得分:2)

观看今年谷歌i / o的内存管理会议可能会有所帮助: Memory management for Android Apps在这里,Patrick Dubroy解释了一些可能导致内存泄漏的情况(特别是通过静态成员保持对应用程序上下文的长期引用)。他还谈到了垃圾收集器。

答案 1 :(得分:0)

我遇到了同样的问题。 我解决了重新采样位图以降低分辨率的问题,然后使用imageView.clearAnimation();之前在imageView上加载新的位图。 如果这对你有帮助,请投票给我。 问候。 注意:在以下示例中,数据包含摄像机图像选择器的新图像数据, imageView 是我们的ImageView。

    Bitmap photo=null;
    imageView.clearAnimation();     
    Uri photoUri =  data.getData(); 
    InputStream imageStream = null;
    try {
    imageStream = getContentResolver().openInputStream(photoUri);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPurgeable = true;
    options.inSampleSize=2;
    Rect outPadding= new Rect(-1, -1, -1, -1);
    photo = BitmapFactory.decodeStream(imageStream, outPadding, options);
    imageView.setImageBitmap(photo);