我正在使用Glide
在onBindViewHolder
上加载base 64图像。但是,一旦加载了图像,我便将其从内存中删除。对于列表中的每个对象保留它会导致应用程序崩溃。当然,这将导致视图回收时出现问题,因为图像源在第二次访问时为空字符串。
使用Glide
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
CardDetails card = cardsList.get(position);
if (card != null && card.getImage() != null) {
holder.progressBar.setVisibility(View.GONE);
GlideApp.with(mContext)
.load(card.getImageBase64())
.signature(new ObjectKey(card.getCardKey()))
.diskCacheStrategy(DiskCacheStrategy.ALL)
.override(imageScaledWidth, Target.SIZE_ORIGINAL)
.into(holder.imageViewCard);
// removing the base 64 image string after its loaded to avoid OOM
card.setImage("");
card.setImageLoaded(true);
}
}
是否有一种方法可以从缓存中重新加载图像,而不是依赖于object字段中的数据?我无法通过URL加载图片,因为我正在安全的后端上调用发布请求。