1

私のアプリケーションでは、ビットマップをロードする必要がありますが、これは非常に大きくなることがあります。Galaxy S2 などのデバイスでも OutOfMemory エラーが発生します。いろいろ調べたところ、ビットマップをリサイクルする必要があることがわかりました。

以前は、BitmapFactory を使用してビットマップをロードし、新しいスケーリングされたビットマップを作成し、bitmapdrawable をすべて 1 行で作成していました。これを行うことで、2 つのビットマップをメモリにロードしていますか? 最初のビットマップを作成し、スケーリングされたビットマップの作成後に再利用する必要がありますか?

アクティビティが頻繁に起動される場合、ビットマップを一度静的フィールドにロードする必要がありますか?それとも毎回リサイクルして再作成する必要がありますか?

ありがとう

4

1 に答える 1

0

プロセスを複数のステップに分割します。使用可能な画面スペースに対してビットマップを測定し、スケーリングされたビットマップをロードする場合、BitmapFactory.Options.inJustDecodeBounds を使用してビットマップをメモリにロードせずに最初のステップを実行できます。これにより、ピクセル データのない Bitmap オブジェクトが得られますが、幅と高さのプロパティがあります。次に、それを使用して、BitmapFactory.Options.inSampleSize を使用してスケーリングされたビットマップをデコードします。

これらの用語を Google で検索すると、まさにこれを行っているサンプル コードが大量に見つかります。はい、ビットマップを使い終わったら、リサイクルすることを忘れないでください。

https://www.google.com/#q=BitmapFactory+Options+inJustDecodeBounds+inSampleSize

于 2012-12-28T01:18:29.850 に答える