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

Aja*_*han 9 android image-loading android-glide

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

Ram*_*mbu 16

根据 Glide维基Caching-and-Cache-Invalidation

1. ObjectKey您可以使用StringSignature混合文件的日期修改时间

文件 - 您可以使用StringSignature混合文件的日期修改时间.

网址 - 虽然使网址无效的最佳方法是确保服务器更改网址并在网址更改时更新客户端,但您也可以使用StringSignature混合任意元数据

Glide.with(requireContext())
    .load(myUrl)
    .signature(ObjectKey(System.currentTimeMillis().toString()))
    .into(myImageView)
Run Code Online (Sandbox Code Playgroud)

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

  1. 你也可以完全使用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

  • 我的天啊。我不敢相信这是最佳答案,并且在其他答案中重复了这一点。.signature(ObjectKey(System.currentTimeMillis().toString())) 不是上次更新的日期时间(我们也不能神奇地知道文件是在服务器上上次更新而不点击它),它只是基于当前时间的签名,所以每毫秒都在变化。这不是缓存,每次再次调用此调用以将相同的图像加载到其他视图时(并且已经过去了超过毫秒)图像将再次从服务器获取。 (2认同)

Gok*_*oku 6

使用.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);
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 5

添加

签名(新对象键(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)
Run Code Online (Sandbox Code Playgroud)