在 Android 的数组列表中添加位图时,堆内存大小会增加



我正在制作一个绘画应用程序,其中在绘制多条线时,我必须在 Arraylist 中添加图像的位图。不幸的是,我得到了一个内存不足异常。我无法解决问题,尽管我增加了堆的大小。

我正在数组列表中添加当前位图,如下所示:

linesbitmap.add(Bitmap.createBitmap(mBitmap));

Android 的数组点中添加位图时堆内存大小会增加?

答案是肯定的。如果将更多的水倒入桶中,则桶中将包含更多的水。如果你在一个袋子里放更多的东西,袋子里会装更多的东西。如果分配更多内存,则将使用更多内存。这与Android没有太大关系 - 这是计算机过去~50年的工作方式。

我无法处理它

使用更少的内存:

  • 列表中的位图较少
  • 列表中具有较小的位图(较少的像素,较低的颜色深度)
  • 在向列表中添加更多位图之前,删除并recycle()列表中的位图
  • 将数据移出内存并移入文件(例如,保留位图,然后将其从列表中删除)
  • 更有效地保存数据(例如,保留有关如何绘制线条的说明,而不是表示线条的位图)
  • 等等

我还增加了堆的大小

您无法在大多数版本的 Android 上增加堆的大小。

最新更新