Android アプリケーションにアルバム アートのサポートを追加したところ、アルバム アートをレイアウトで表示するとアプリケーションのメモリが急増し、再生サービスが最終的に強制終了されてメモリが解放されるという問題が発生しました。問題は、抽出したアルバム アートを圧縮せずにレイアウトに追加していることだと思います。これにより、大きな画像をメモリにキャッシュする必要があります。ビットマップを作成するために使用しているコードは次のとおりです。
byte [] blob = mCursor.getBlob(mCursor.getColumnIndexOrThrow(Media.MediaColumns.PICTURE));
if (blob != null) {
return BitmapFactory.decodeByteArray(blob, 0, blob.length);
}
これらのビットマップを均一にスケーリング/圧縮して、メモリフットプリントを削減することは可能ですか? また、バイト配列(入力ストリームではなく)を使用して直接圧縮する方法はありますか。