Android 如何从同一url在Glide中重新加载图像?
我正在使用Glide image loader从特定URL加载图像,现在如果我将图像更新为相同的URL,Glide仍会在imageview中显示缓存的图像。如何从同一URL重新加载映像?使用Android 如何从同一url在Glide中重新加载图像?,android,android-glide,image-loading,Android,Android Glide,Image Loading,我正在使用Glide image loader从特定URL加载图像,现在如果我将图像更新为相同的URL,Glide仍会在imageview中显示缓存的图像。如何从同一URL重新加载映像?使用.diskCacheStrategy(diskCacheStrategy.NONE) 使用下面的代码,它的工作为我好。设置diskCacheStrategy(diskCacheStrategy.NONE)和skipMemoryCache(true)。它将每次加载图像 Glide.with(Activity.t
.diskCacheStrategy(diskCacheStrategy.NONE)
使用下面的代码,它的工作为我好。设置diskCacheStrategy(diskCacheStrategy.NONE)和skipMemoryCache(true)。它将每次加载图像
Glide.with(Activity.this)
.load(theImagePath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(myImageViewPhoto);
根据
Glide
wikiCaching和Cache invalization
选项1(Glide v4):使用ObjectKey
更改文件的日期修改时间
Glide.with(requireContext())
.load(myUrl)
.signature(ObjectKey(System.currentTimeMillis().toString()))
.into(myImageView)
选项1(Glide v3):使用StringSignature
更改文件的日期修改时间
Glide.with(requireContext())
.load(myUrl)
.signature(ObjectKey(System.currentTimeMillis().toString()))
.into(myImageView)
URL-尽管使URL无效的最佳方法是确保服务器更改URL并在URL内容更改时更新客户端,但您也可以使用StringSignature混合任意元数据
Glide.with(yourFragment)
.load(url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis()))
.into(yourImageView);
如果所有其他操作都失败,并且您既不能更改标识符,也不能跟踪任何合理的版本元数据
选项2:您还可以使用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);
Glide.with(Activity.this).load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE )
.skipMemoryCache(true)
.into(imageView);
参考资料:经过几个小时的努力,我找到了解决方案。您可以通过添加StringSignature来混合文件的日期时间。因此,当文件加载时,它将始终使用最新的。如下所示
Glide.with(this)
.load(image_url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
.into(imageview);
参考:添加
签名(新的ObjectKey(String.valueOf(System.currentTimeMillis())))
我使用了一种变通方法,因为没有其他方法适合我
在我的例子中,我知道当服务器上的图像发生变化时,我只是在url的末尾添加
?=
,对于glide,它将是一个新的url,而不是使用缓存,glide将加载新图像。如果我只想在图像的url更改时加载图像,该怎么办?如果我只想在图像的url更改时加载图像,该怎么办?glide 4签名的最新文档:当我尝试itOMG时,这两种方法都不会显示为有效方法。我不敢相信这是最好的答案,其他答案也重复了这一点。签名(ObjectKey(System.currentTimeMillis().toString())不是上次更新的日期时间(我们也无法神奇地知道文件在服务器上最后一次更新时没有点击它),它只是基于当前时间的签名,因此每毫秒都会发生更改。这不是缓存,每次再次调用此调用以将同一图像加载到其他视图(超过毫秒)时,将再次从服务器获取图像。如果文件缓存后超过毫秒,这只是缓存失效。最好是完全没有缓存。如果文件缓存后经过的时间超过毫秒,这只是缓存失效。最好根本没有缓存。