我正在使用Glide图像加载器从特定URL加载图像,现在如果我将图像更新为相同的URL,Glide仍在我的imageview中显示缓存的图像。如何从同一个URL重新加载图像?
根据Glide
wiki Caching-and-Cache-Invalidation
1.StringSignature
您可以使用StringSignature混合文件的日期修改时间
文件 - 您可以使用StringSignature
混合文件的日期修改时间。
网址 - 虽然使网址无效的最佳方法是确保服务器更改网址并在网址更改时更新客户端,但您也可以使用StringSignature混合任意元数据
Glide.with(yourFragment)
.load(url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis()))
.into(yourImageView);
如果所有其他方法都失败了,您既不能更改标识符也不能跟踪任何合理的版本元数据,
diskCacheStrategy()
和DiskCacheStrategy.NONE
完全禁用磁盘缓存Glide.with(Activity.this).load(url).diskCacheStrategy(DiskCacheStrategy.NONE).skipMemoryCache(true).into(imageView);
参考https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation
使用.diskCacheStrategy(DiskCacheStrategy.NONE)
Glide.with(context)
.load(url)
.apply(new RequestOptions()
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true))
.into(ImageView);
加
signature(new ObjectKey(String.valueOf(System.currentTimeMillis())))
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.cover_placeholder);
requestOptions.error(R.drawable.no_image_available);
requestOptions.signature(
new ObjectKey(String.valueOf(System.currentTimeMillis())));
Glide.with(MosaicFragment.this)
.setDefaultRequestOptions(requestOptions)
.load(finalPathOrUrl)
使用下面的代码,它对我来说很好。设置diskCacheStrategy(DiskCacheStrategy.NONE)和skipMemoryCache(true)。它每次都会加载图像。
Glide.with(Activity.this)
.load(theImagePath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(myImageViewPhoto);
经过几个小时的挣扎,我找到了解决方案。你可以通过添加StringSignature来混合文件的日期时间。当文件加载时,它将始终使用最新的一个。就像这个
Glide.with(this)
.load(image_url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
.into(imageview);
参考:https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation