2011-10-19 25 views
7

私はcreateBitmap()を複数の場所で使用しています。このAPIが例外を投げていることがあります。OutOfMemoryError()この例外を回避する方法は?androidのcreateBitmap()クラッシュを避ける方法

私は任意の助けをいただければ幸い画面

createBitamp(width, height, Config.ARGB_8888); 

画面のwidth = width

height = height、以下のように使用しています。

+0

このブログの記事を読むhttp://codingaffairs.blogspot.com/2016/07/processing-bitmap-and-memory-management.html –

答えて

5

多くの人がこの問題に直面しています。

  • 増やす使用可能なメモリ:サービスを停止、または新規の方
  • 減のメモリ使用量にあなたのデバイスを変更:あなたのコード
  • を最適化して、[UPDATE]無料アップ未使用あなたはprobleを解決するには3つの方法がありますビットマップのメモリ:recycle()を呼び出します。
  • [UPDATE] GarbageCollectorを使用しないでください:)

通常のビットマップの問題で、ガベージコレクタが役立ちます。

ジャスティンBreitfellerの応答linksビットマップの内部の動作の詳細な説明に。取り除くメッセージは、(ネイティブのcreateBitmapメソッドで)ビットマップのデータに割り当てられたメモリが多少離れて扱われ、BitmapがガベージコレクタブルになったときにGarbageCollectorによって直接解放されないということです。本当の解決策は、ビットマップを使用しないときにリサイクル()することです。これにより、ビットマップオブジェクトに割り当てられた(小さな)メモリは引き続き保持されますが、ビットマップデータガベージに割り当てられた(大)メモリは収集可能に設定されます。したがってGarbageCollectorは両方を解放しますが、手動で呼び出す必要はありません.OutOfMemoryが発生する前に、JVMはGarbageCollectを試みます。

+0

System.gc()は動作しているようです私にとって最高!ありがとう!! –