Android:“java-lang-outofmemoryerror-bitmap-size-exceeded-vm-budget-android”从sdcard加载位图时?

时间:2011-02-14 09:54:00

标签: android memory-leaks bitmap

在我的应用程序中,我必须使用500x500像素的小图像显示大约10000 x 5000的图像。即,通过平铺图像。 为了将所有图像平铺到最初,我从sdcard收集所有位图,以便在画布上绘制。

但是当我使用BitmapFactory.decodeFile(path)从外部存储加载图像时遇到错误 java-lang-outofmemoryerror-bitmap-size-exceeded-vm-budget-android

任何人都可以如何避免这种错误,并且想出如何将大量图像平铺到单个图像中。

感谢你, SRINIVAS

1 个答案:

答案 0 :(得分:0)

  1. 切勿加载任何不需要的瓷砖。 “我从sdcard收集所有位图”表示你正在解压缩你可能需要的每一张图像,这是错误的做法。

  2. 使用较小的瓷砖。 256x256是一个很好的尺寸。

  3. 将它们加载为Config.RGB565(即16bpp)。

  4. 定期回收()您不需要的位图。

  5. 基本上,您需要实现某种最近使用的(MRU)位图缓存。