4

http://developer.android.com/training/displaying-bitmaps/manage-memory.htmlによると

Android 2.3.3 (API レベル 10) 以前では、recycle() の使用が推奨されます。アプリで大量のビットマップ データを表示している場合、OutOfMemoryError エラーが発生する可能性があります。recycle() メソッドを使用すると、アプリはできるだけ早くメモリを再利用できます。

BitmapDrawableのようにクリーンアップを実行する必要があるかどうか疑問に思っていました

bitmapDrawable.getBitmap().recycle()

不要になったら?

4

2 に答える 2

2

使用していないときは、ビットマップをリサイクルすることをお勧めします。onResume() でバイマップをロードし、onPause() で同じものをリサイクルできます。

したがって、メモリ消費を減らし、メモリ リークを回避するには、使用していないビットマップをリサイクルすることをお勧めします。

リンクのメモリ管理の話も見てください。

http://www.youtube.com/watch?v=_CruQY55HOk

編集:

投稿したリンクからの引用。(Android 2.3.3以下のメモリの管理という見出しの下で確認できます)

Android 2.3.3 (API レベル 10) 以前では、recycle() の使用が推奨されます。

HoneyComB 以降のビットマップは、ネイティブのビットマップ ヒープではなく HEAP に格納されます。

Android 3.0 (API レベル 11) では BitmapFactory.Options.inBitmap フィールドが導入されています。このオプションが設定されている場合、Options オブジェクトを受け取るデコード メソッドは、コンテンツをロードするときに既存のビットマップを再利用しようとします。これは、ビットマップのメモリが再利用されることを意味し、パフォーマンスが向上し、メモリの割り当てと割り当て解除の両方が削除されます

http://developer.android.com/training/displaying-bitmaps/manage-memory.html

于 2013-04-19T15:45:55.777 に答える
2

ドキュメントが教えてくれます

これは高度な呼び出しであり、通常、このビットマップへの参照がなくなると通常の GC プロセスによってこのメモリが解放されるため、呼び出す必要はありません。

だから私は行きます:いいえ、あなたはそれを呼び出す必要はありません。ただし、持っている参照をクリアして、ビットマップ リソースを解放してください。

あなたが追加したリンクは、それが前後に役立った理由をほとんど示しています。

Android 2.3.3 (API レベル 10) 以前では、ビットマップのバッキング ピクセル データはネイティブ メモリに保存されます。これは、Dalvik ヒープに格納されているビットマップ自体とは別のものです。ネイティブ メモリ内のピクセル データは予測可能な方法で解放されないため、アプリケーションが一時的にメモリ制限を超えてクラッシュする可能性があります。Android 3.0 (API レベル 11) 以降、ピクセル データは関連するビットマップと共に Dalvik ヒープに格納されます。

于 2013-04-19T15:30:02.170 に答える