当然,以上说的是处理自己的服务器上,数据可以增加字段的情况。如果只是单纯的加载网络上的图片,可以在图片下载之后,在APP中做标识,一段时间之内不更新,在一天或固定时间后检测标识并更新网络图片。比如一天更新一次,则可将日期作为标识。
1、想要重新加载图片
(URL没变,图片变了)
2、发现无法重新加载,以为是有缓存的原因
于是使用clear(view),但是只能清除控件上的图片,并不能真的清除缓存
又使用clearMemory(),还是不行
又使用clearDiskCache(),出现报错,提示要在background thread后台线程中调用,卧槽….
最后在Stack Overflow找到方法,如下
Glide.with(this)
.load(URL)
.signature(new StringSignature(UUID.randomUUID().toString())) // 重点在这行
.error(R.mipmap.ic_launcher)
.into(setting_face_img);
3、原因
Glide中的图片缓存key的生成是通过一个散列算法来实现的,所以很难手动去删除指定的图片缓存
Glide的图片缓存都有对应的唯一标识符,如果是相同的,就不加载调用缓存
不过改变标识符很困难,所以Glide提供signature()方法,来附加一个数据到缓存key中
如果链接是文件,就用StringSignature,
比如.signature(nre StringSignature(yourVersionMetadata)).
如果链接是多媒体,就用MediaStoreSignature,
比如.signature(new MediaStoreSignature(mimeType, dateModified, orientation)).
参考 https://blog.csdn.net/u013420865/article/details/53197788