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

问题描述 投票:9回答:5

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

android android-glide image-loading
5个回答
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完全禁用磁盘缓存

Glide.with(Activity.this).load(url).diskCacheStrategy(DiskCacheStrategy.NONE).skipMemoryCache(true).into(imageView);

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


3
投票

使用.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
投票

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)

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.