I'm working on implementing a cache for a lot of bitmap tiles I have. What I've done so far:
Successfully implemented a LRU Cache system, but the tiles still load slowly when they must be loaded from the app's resources. The cache currently has about an 85% hit rate.
Whenever I must load the bitmap from resources, it is still slow like I said. With this in mind, I am now loading the Bitmaps from an Async task. Before this, everything would load without error, but it was fairly slow. Now, it's faster since it's not working on the main thread, but I inevitably run into an OOM error. Here's the code for my Async task:
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);
}
}
Any ideas on how I can implement this so I don't get the Out of Memory error? Since this is called in the draw method, I'm thinking that the multiple calls to it are causing it. Thanks for any advice.