私のアプリケーションには、データベースからデコードされる 350 を超える画像があります。画像データからビットマップを作成し、デバイスの画面解像度に基づいてスケーリングします。これらのビットマップをすべてメモリに保持しようとすると、outOfMemory 例外が発生しました。次に、OutOfMemoryExceptions を回避する方法として、BitmapFactory.Options.inPurgeable がさまざまな場所で推奨されています。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
Bitmap bitmap = BitmapFactory.decodeByteArray(imagaeData, 0, size, options);
...
..
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, reqWidth, reqHeight, true);
このスケーリングされたビットマップを HashMap にキャッシュし、画像ビューに使用しています。ここでも、ビットマップをメモリにロードしているときに OutOfMemory 例外に直面しています。私の場合、inPurgeableが機能しているかどうかはわかりません。スケーリングされたビットマップがバイト配列を参照するかどうか疑問に思っています。スケーリングされたビットマップを使用しているため、decodeByteArray で使用される inPurgeable オプションの効果がありますか。このビットマップ メモリの問題を処理する方法がわかりません。あなたの助けに感謝。