打开很多小图片时OutOfMemoryError

时间:2011-08-02 08:21:37

标签: android bitmap

  

可能重复:
  OutOfMemoryError: bitmap size exceeds VM budget :- Android

在我的应用程序中,我加载了一些我对ImageViews有影响的Bitmap(介于2k和300k之间),在我的应用程序首次启动时它工作正常但是当我退出并重新启动它时,我总是在Bitmap中出现OutOfMemoryError创建

有人可以告诉我为什么吗?

3 个答案:

答案 0 :(得分:0)

离开活动时,您应该手动使用bitmap.recycle()

请参阅http://developer.android.com/reference/android/graphics/Bitmap.html#recycle()

答案 1 :(得分:0)

问题是因为您的位图的大小太大而不是VM可以处理的。例如,从您的代码中我可以看到您正在尝试将Image粘贴到使用Camera捕获的imageView中。所以通常相机图像的尺寸太大会明显地增加这个错误。正如其他人所建议的那样,您必须通过采样或将图像转换为更小的分辨率来压缩图像。例如,如果您的imageView的宽度和高度为100x100,则可以创建缩放的位图,以便精确填充imageView。你可以这样做,

Bitmap newImage = Bitmap.createScaledBitmap(bm, 350, 300,true);

你必须回收你的位图并将你的位图归零,

Bitmap bmap.recycle();
Bitmap bmap=null;

答案 2 :(得分:0)

我真的怀疑你必须使用bitmap.recycle()如果你取消引用,允许GC(但请证明我错了)。

我会说你的位图更有可能过大,possibly aggravated by long lived Context references或者其他。