我正在为我拥有的很多位图图块实现缓存。到目前为止我所做的:
成功实现了 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 方法中调用的,我认为对它的多次调用导致了它。感谢您的任何建议。