-2

多くの線を描画するときに、画像のビットマップを Arraylist に追加する必要があるペイント アプリケーションを作成しています。残念ながら、メモリ不足の例外が発生しました。ヒープのサイズを増やしましたが、問題を解決できません。

次のように現在のビットマップを Arraylist に追加しています。

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

1 に答える 1

4

Androidでarraylitsにビットマップを追加すると、ヒープメモリサイズが増加しますか?

もちろん。より多くの水をバケツに注ぐと、バケツにはより多くの水が含まれます。バッグにもっと多くのものを入れると、バッグにはより多くのものが入ります。より多くのメモリを割り当てると、より多くのメモリを使用することになります。これは Android とはあまり関係がありません。これは、過去 50 年間、コンピュータが機能してきた方法です。

私はそれを扱うことができません

少ないメモリを使用:

  • リスト内のビットマップを少なくする
  • リスト内のビットマップを小さくします (ピクセル数を減らし、色深度を下げます)。
  • recycle()リストにビットマップを追加する前に、リスト内のビットマップを削除します
  • データをメモリからファイルに移動します (たとえば、ビットマップを永続化してからリストから削除します)。
  • データをより効率的に保存する (例: 線を表すビットマップではなく、線の描画方法に関する指示を保持する)
  • 等々

ヒープのサイズも増やしました

Android のほとんどのバージョンでは、ヒープのサイズを増やすことはできません。

于 2012-04-19T13:55:46.917 に答える