使用BitmapFactory加载多个图像[OutOfMemoryException]

时间:2013-02-01 20:13:12

标签: java android

我正在尝试使用BitmapFactory将30个图像加载到Bitmap数组中,但无论我做什么,我都会一直得到OutOfMemoryException ..我尝试调整它并按比例缩小...人们通常做4-8我试过12 ,16,20,什么都行不通..

我有一个循环,它在一串URL中加载并每次打开一个新的httpurlconnection,下载图像,并尝试将其保存为位图。图像大约是300kb。

我已经阅读了其他人只有一两张图片就有这个问题,所以我不确定我想做什么甚至是可能的..我明白jpegs和png是压缩格式,文件大小是因为它是一个未压缩的位图,所以在手机上更大,但必须有一种方法可以有效地将一堆图片保存在一个阵列中......因为我之前已经看过它。

我尝试了bitmap.recycle()并且加载了大约20秒,但没有内存错误,然后当我尝试从位图查看图像时它给了我'无法查看回收的图像'?

不确定是否有其他人试图加载许多图片(30-100)并将其保存在位图数组中,或者如果它甚至可能,但不管怎样,请告诉我!

感谢。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,并认为我应该帮助任何有同样问题的人。

我最终使用了nostra13" Universal Image Loader" - https://github.com/nostra13/Android-Universal-Image-Loader

为了避免OOM错误,我从我的API加载了两组独立的图像,一组是全尺寸的,另一组是缩略图大小(100x100 ish)。然后,我为gridview加载所有缩略图大小的图像,并仅在用户单击缩略图时加载完整大小的INDIVDUAL图像。通过这种方式,我避免了所有OOM错误。我还在显示gridview中的下一个位图之前回收了我使用的位图。

希望这有助于:)