0

ビットマップをロードする方法が効率的であり、ビットマップの絶え間ないロードとアンロードに複数回使用できるかどうかを知りたいです。

静的ヘルパー メソッドを使用して、アセット フォルダーからビットマップをロードします。

public static Bitmap assetImage(AssetManager am , String file){
        InputStream stream = null;
        try{
            stream = am.open(file);
            Bitmap bmp = BitmapFactory.decodeStream(stream);
            if(stream != null){
                stream.close();
            }
            return bmp;
        }
        catch(IOException e){

            return null;
        }
    }

クラスに保存します(スプライトと呼びましょう)。ロードするか、ビットマップが不要になったときは、リサイクルしてヌルにします。次に、ヘルパー静的メソッドを再度使用します。私の質問は、このコードは OOM エラーを回避するのに役立ち、不要なリソースをガベージ コレクションしますか?

前もって感謝します

4

1 に答える 1

0

あまりにも早く最適化しようとするのは、常に悪い考えです。

この方法は、大量の画像をロードする場合にそのような問題を防ぐことができますが、そのエラーが発生しない場合は、IO 操作を行う必要がないように、すべての画像をロードして将来の使用のために保存することをお勧めします。何度も。

また、Java 7 をターゲットにしている場合は、try-with-resources を使用すると、ストリームを閉じる必要がなくなります。ストリームは自動的に閉じられます。

最後に、画像がロードされていない場合に null を返すのではなく、(既にメモリにある) デフォルトのものを返す方がよいため、null チェックを回避できます。ウィキペディアのNull オブジェクト パターンを参照してください。

于 2013-09-25T19:53:54.110 に答える