2012-04-19 35 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