1

我正在尝试使用 BitmapFactory 将 30 个图像加载到位图数组中,但无论我做什么,我都会不断收到 OutOfMemoryException .. 我尝试调整它的大小并缩小比例.. 人们通常做 4-8 我试过 12,16, 20,没用。。

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

我读过其他人只有一两张图片有这个问题,所以我不确定我想要做什么甚至是可能的。我知道 jpeg 和 png 是压缩格式,文件大小更大手机,因为它是一个未压缩的位图,但必须有一种方法可以有效地将一堆图片保存在一个数组中......因为我以前见过它。

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

不确定是否有其他人尝试加载许多图片(30-100)并将其保存在位图数组中,或者是否有可能,但无论哪种方式,请告诉我!

谢谢。

4

1 回答 1

0

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

我最终使用了 nostra13 的“通用图像加载器” - https://github.com/nostra13/Android-Universal-Image-Loader

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

希望这会有所帮助:)

于 2014-06-23T15:51:15.213 回答