我正在制作一个绘画应用程序,其中在绘制多条线时,我必须在 Arraylist 中添加图像的位图。不幸的是,我得到了一个内存不足异常。我无法解决问题,尽管我增加了堆的大小。
我正在数组列表中添加当前位图,如下所示:
linesbitmap.add(Bitmap.createBitmap(mBitmap));
在Android 的数组点中添加位图时堆内存大小会增加?
答案是肯定的。如果将更多的水倒入桶中,则桶中将包含更多的水。如果你在一个袋子里放更多的东西,袋子里会装更多的东西。如果分配更多内存,则将使用更多内存。这与Android没有太大关系 - 这是计算机过去~50年的工作方式。
我无法处理它
使用更少的内存:
- 列表中的位图较少
- 列表中具有较小的位图(较少的像素,较低的颜色深度)
- 在向列表中添加更多位图之前,删除并
recycle()
列表中的位图 - 将数据移出内存并移入文件(例如,保留位图,然后将其从列表中删除)
- 更有效地保存数据(例如,保留有关如何绘制线条的说明,而不是表示线条的位图)
- 等等
我还增加了堆的大小
您无法在大多数版本的 Android 上增加堆的大小。