在Android中的Arraylists中添加位图时堆内存大小会增加吗?

时间:2012-04-19 13:46:10

标签: android

我正在制作一个绘画应用程序,在绘制多行时我必须在Arraylist中添加图像的位图。不幸的是,我得到了一个内存不足的例外。虽然我增加了堆的大小,但我无法解决问题。

我在这样的Arraylist中添加当前位图:

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

1 个答案:

答案 0 :(得分:4)

  

在Android中的arraylits中添加位图时,堆内存大小是否会增加?

当然。如果您将更多的水倒入桶中,桶中将含有更多的水。如果你把更多东西放在一个袋子里,那么这个包里面会有更多的东西。如果分配更多内存,则将使用更多内存。这与Android没什么关系 - 这是计算机在过去〜50年间的工作方式。

  

我无法处理它

使用更少的内存:

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

我还增加了堆的大小

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