ADrawable
は a よりもはるかに広範ですBitmap
。 Drawable
グラフィックス システムがディスプレイにレンダリングできるものを表すことを目的としています。-やDrawable
- などのサブクラスがあり、これらは s を含まないため、手動でのメモリ管理は一切必要ありません。ShapeDrawable
ColorDrawable
Bitmap
aは a をBitmapDrawable
ラップし、Bitmap
a への参照を含みますBitmap
。Bitmap
Android はすべてのピクセル データをBitmaps
別のヒープに保持し、アプリケーションの残りの部分とは別に管理するため、これは特別です。Android ガベージ コレクターがBitmap
オブジェクトをクリーンアップすると、ビットマップ ヒープからピクセル データもクリーンアップされます。recycle()
ただし、 を手動で呼び出してBitmap
、無効をマークし、Bitmap
そのピクセル データを解放することで、より早く発生させることができます。
Bitmap
Android は、実行中のアプリケーションごとに固定サイズのビットマップ ヒープを割り当てます。一度に使用中の が多すぎると、アプリがヒープを使い果たす可能性があります。そのため、アプリケーションでビットマップを広範囲に使用する場合、ビットマップが不要になるとすぐにビットマップを再利用することでメリットが得られるでしょう。
更新:コメントに記載されているように、個別のビットマップ ヒープは Android のハニカム以前のバージョンに適用されます。Honeycomb の時点で、ビットマップ ヒープはアプリケーション ヒープに統合されました。詳細情報を含む SO 投稿を次に示します。