私は自分が持っている多くのビットマップタイルのキャッシュの実装に取り組んでいます。私がこれまでにしたこと:
LRUキャッシュシステムの実装に成功しましたが、アプリのリソースからタイルを読み込む必要がある場合でも、タイルの読み込みが遅くなります。キャッシュのヒット率は現在約85%です。
リソースからビットマップをロードする必要があるときはいつでも、私が言ったようにそれはまだ遅いです。これを念頭に置いて、非同期タスクからビットマップを読み込んでいます。これ以前は、すべてがエラーなしで読み込まれていましたが、かなり低速でした。現在、メインスレッドで動作していないため高速ですが、必然的にOOMエラーが発生します。これが私の非同期タスクのコードです:
public class loadBitmap extends AsyncTask<Void,Void,Void>
{
Bitmap bit;
@Override
protected Void doInBackground(Void... params)
{
Options opts = new Options();
bit = BitmapFactory.decodeResource(reso, drawable, opts);
return null;
}
@Override
protected void onPostExecute(Void result)
{
// TODO Auto-generated method stub
drawLoadedBit(bit);
super.onPostExecute(result);
}
}
メモリ不足エラーが発生しないようにこれを実装する方法についてのアイデアはありますか?これはdrawメソッドで呼び出されるので、複数回の呼び出しが原因だと思います。アドバイスありがとうございます。