2012-04-19 39 views
-2

我正在制作一个绘画应用程序,在绘制很多行时必须在Arraylist中添加图像位图。不幸的是,我得到了一个内存不足的例外。我无法修复这个问题,尽管我增加了堆的大小。在Android中的Arraylists中添加位图时堆内存大小增加?

我在这样一个ArrayList添加当前的位图:

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

回答

4

堆内存大小是增加,而在Android的arraylits将位图?

当然。如果将更多的水倒入桶中,桶中将含有更多的水。如果你把更多的东西放进包里,包里会包含更多东西。如果你分配更多的内存,你将会使用更多的内存。这与Android没有多大关系 - 这是计算机在过去50年中的工作方式。

我不能处理它

使用更少的内存:

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

我也有增加堆

的大小可以不增加在大部分Android版本的堆的大小。

+1

经典CommonsWare风格... – 2012-04-19 15:10:44