我正在使用ViewFlipper来显示db的一些图像。 我将blob值带到ArrayList,然后将每个字节数组转换为位图。
然后我将这些位图设置为ViewFlipper的每个Imageview。 如果图像数量低于10,那么它工作正常。但如果它超过10,那么它突然发现了一个异常: OutOfMemoryException:位图大小超过VM预算。
当我使用BitmapFactory.Options的inSampleSize时,它工作正常。但我想显示具有实际高度和宽度的图像。我怎么能毫无例外地做到这一点?
我的代码是:
ViewFlipper vfImage = (ViewFlipper)findViewById(R.id.vfImage);
for(Photos objPhotos :arPhotos)
{
byte[] btImages = null;
Bitmap bitmapImage = null;
btImages = objPhotos.getImage();
ImageView imgPhoto= new ImageView(this);
bitmapImage = BitmapFactory.decodeByteArray(btImages, 0, btImages.length);
imgPhoto.setImageBitmap(bitmapImage);
vfImage.addView(imgPhoto);
}
vfImage.startFlipping();
请帮帮我.. 谢谢......
答案 0 :(得分:0)
您应该考虑卸载当前未显示的位图,以便仅在内存中保留当前屏幕上的位图。祝你好运!
答案 1 :(得分:0)
完成位图的使用后,请尝试将其设为null,
Bitmap bitmapImage = null;
尝试在for循环的最后一行添加上面的行。这意味着每次将位图设为null时,都会减少位图捕获的内存。也尝试提供
bitmapImage.recycle();
这将回收位图并为您提供可用内存。