如何从同一个网址重新加载Glide中的图像?

时间:2017-12-19 11:42:56

标签: android android-glide image-loading

我正在使用Glide图像加载器从特定的URL加载图像,现在如果我将图像更新为相同的URL,Glide仍会在我的imageview中显示缓存的图像。如何从同一个URL重新加载图像?

6 个答案:

答案 0 :(得分:12)

根据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);

如果所有其他方法都失败了,您既不能更改标识符也不能跟踪任何合理的版本元数据,

  1. 您还可以使用diskCacheStrategy()DiskCacheStrategy.NONE
  2. 完全停用磁盘缓存

    Glide.with(Activity.this).load(URL).diskCacheStrategy(DiskCacheStrategy.NONE  ).skipMemoryCache(真) .into(ImageView的);

    参考https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation

答案 1 :(得分: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);

答案 2 :(得分:2)

添加

签名(新的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)

答案 3 :(得分:0)

使用下面的代码,它对我来说很好。设置 diskCacheStrategy(DiskCacheStrategy.NONE) skipMemoryCache(true)。它每次都会加载图像。

Glide.with(Activity.this)
    .load(theImagePath)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .skipMemoryCache(true)
    .into(myImageViewPhoto);

答案 4 :(得分:0)

经过几个小时的努力,我找到了解决方案。你可以通过添加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

答案 5 :(得分:0)

我使用了一种变通方法,因为没有其他方法对我有用

就我而言,我知道服务器上的图像何时会发生变化,所以我只是在 url 末尾添加 ?=,对于 glide,它将是一个新的 url,而不是使用缓存 Glide 将加载新图片。