原因
Glide加载相同URL时由于缓存无法更新图片
解决方法
1,去掉缓存
如果是本地图片,可以采取取消缓存的方式,这样是比较简单的操作:
.skipMemoryCache(true) // 不使用内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE) // 不使用磁盘缓存
.into(imageView);
2,使用signature
无论本地图片网络图片,都可以使用另一个方法,就是使用Glide的方法.signature(Key signature),通过创建一个签名,然后在图片更新的时候,更改签名,达到重新加载的效果。该签名可以是个String,可以是图片更新的时间
Glide.with(getActivity())
.load(urlString)
.signature(new ObjectKey(DateTimeUtil.GetNowTime()))//也可以利用系统毫秒System.currentTimeMillis()
.into(portrait);
注意:Glide 4.0中new StringSignature()类已经不在被支持,需改为new ObjectKey()
使用的工具类
public class DateTimeUtil {
public static String GetNowTime() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
String str = formatter.format(curDate);
return str;
}
}