参考资料:https://muyangmin.github.io/glide-docs-cn/doc/caching.html
业务需求:
列表逐个轮训获取视频流中第一帧的截图,虽然每次返回的图片URL都是不同的,但是图像没有改变.导致每次刷新都没有使用到glide缓存机制,出现重复加载浪费资源的情况
分析:
首先glide源码4.8.0版本中,默认缓存key是通过model,signature,widthd,height,transformations等属性共同作用的
model其实就是我们传入的url字符串
那么可以从model这个变量入手,改造model,使其满足我们的业务需要
import com.bumptech.glide.load.model.GlideUrl;
public class MyGlideUrl extends GlideUrl {
private String eventId;
public MyGlideUrl(String url,String eventId) {
super(url);
this.eventId = eventId;
}
@Override
public String getCacheKey() {
return eventId;
}
}
封装自己的url类,并根据业务需要重写getCacheKey()方法
MyGlideUrl myGlideUrl = new MyGlideUrl(picUrl,event.getId());
Glide.with(cext)
.load(myGlideUrl)
.apply(requestOptions)
.into(holder.eventIv);