我的RecyclerView
项目每个包含5个位图。我将在滚动期间下载这些位图。列表中可以有数百个项目。我有以下问题:
RecyclerView
不缓存屏幕外项目?记忆
效率是我的首要任务。如果我不得不重新创建它就可以了
每次他们在屏幕上的项目。UPD:找到了如何防止缓存:
list.getRecycledViewPool().setMaxRecycledViews(itemType,numCachedItems);
答案 0 :(得分:0)
正如卡姆兰所建议的那样使用毕加索。 否则使用Glide,这是一个位图转换的例子:
// load photo
Glide.with(mCtx)
.load(url)
.asBitmap()
.into(new SimpleTarget<Bitmap>(100,100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
myImageView.setBitmap(resource);
}
});
这是在MainThread上的MyImageView(扩展ImageView)(被授权更改ui)
@UiThread
public void setBitmap(Bitmap resource) {
this.setImageBitmap(resource);
}
要禁用缓存,您可以尝试
mRecyclerView.setItemViewCacheSize(0)
答案 1 :(得分:0)
我刚刚意识到RecyclerView
重用了项目,因此我可以在onBindViewHolder
方法中卸载我的数据