我想知道本文中介绍的架构:
public void loadBitmap(int resId, ImageView imageView) {
final String imageKey = String.valueOf(resId);
final Bitmap bitmap = getBitmapFromMemCache(imageKey);
if (bitmap != null) {
mImageView.setImageBitmap(bitmap);
} else {
mImageView.setImageResource(R.drawable.image_placeholder);
BitmapWorkerTask task = new BitmapWorkerTask(mImageView);
task.execute(resId);
}
}
class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {
...
// Decode image in background.
@Override
protected Bitmap doInBackground(Integer... params) {
final Bitmap bitmap = decodeSampledBitmapFromResource(
getResources(), params[0], 100, 100));
addBitmapToMemoryCache(String.valueOf(params[0]), bitmap);
return bitmap;
}
...
}
loadBitmap 检查缓存是否存在,分出一个异步任务,然后该任务将图像放入缓存中。
我想知道这是否有风险,因为它不是原子的 - 您有一个组件检查缓存,另一个组件将内容放入缓存。是不是更好
将存在检查移至 doInBackground;或者
创建其他方式,整个交互将是: Bitmap bitmap = getFromCacheOrDecode(key);
你们有什么感想?
www说
长风秋雁
随时随地看视频慕课网APP
相关分类