问题描述: 使用Glide加载url中的网络图片,url下的图片已经更新,但是加载出来的图片仍是未更新前的图片。
Glide
.with(context)
.load(url)
.into(target)
原因: Glide加载图片前会去读取缓存,缓存以<K,V>的方式保存url和图片文件。因此,只要url没有改变,默认情况下Glide就会从缓存中读取这个图片。 解决方法: 1.跳过缓存
Glide
.with(context)
.load(url)
.diskCacheStrategy( DiskCacheStrategy.NONE )
.skipMemoryCache( true )
.into(target)
这种解决办法问题在于,每次都会去从网络中加载图片,不使用缓存会造成每次请求图片导致加载很慢,体验不好。 2.清空缓存
Thread{
Glide.get(context).clearDiskCache()
Handler(Looper.getMainLooper()).post {
Glide.get(context).clearMemory()
}
}
清除Glide的缓存,使得图片重新加载,有时候仍然不能解决问题,而且不好控制清除的时机。 3.添加标签 当使用了标签后,图片将根据标签是否相同,以判断是否从网络中加载图片。
Glide
.with(context)
.load(url)
.signature(ObjectKey(sign))
.into(target)
这个sign可以是任意类型的任意值,可以使用每次更新url中图片的时间戳。即先保存一个时间戳,更新图片后更新时间戳,就会使得图片加载最新图片。
|