【问题标题】:How to load updated image instead of old image in recyclerview using glide library如何使用 glide 库在 recyclerview 中加载更新的图像而不是旧图像
【发布时间】:2019-03-24 23:55:03
【问题描述】:

我实现了 Glide 库以在 ImageView 中加载图像,它工作正常。

依赖:

compile "com.github.bumptech.glide:glide:4.5.0"
annotationProcessor "com.github.bumptech.glide:compiler:4.5.0"
compile "jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0"

在适配器中:

                    Glide.with(context)
                    .load(ImageUrl)
                    .apply(bitmapTransform(new jp.wasabeef.glide.transformations.BlurTransformation(25)
                    ).diskCacheStrategy(DiskCacheStrategy.ALL))
                    .apply(new RequestOptions()
                            .placeholder(R.mipmap.ic_launcher))
                    .into(view);

问题是,当我上传图像并在 recyclerview 中显示并从 API 获取 URL 时,它会显示以前从缓存中添加的图像而不是新图像。我只需要在第一个位置添加新图像,而不是刷新整个列表。

通过使用这个:

.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)

上面的代码刷新整个列表,因为清除了整个缓存数据。我只需要在列表中显示新上传的图片。

【问题讨论】:

  • 如何通过添加 url 或仅您注册的位图加载到图像?请分享您的适配器
  • 我不认为您可以检查特定的 url 天气内容是否已更改。所以解决方案可以是每次上传图片时都使用唯一的url。
  • 另一种解决方案是图片资源的用户元数据。您必须使用 Glide 的.signature() 功能。 this 可能会有所帮助。 @ADM 提到的简单解决方案,每次上传图片时生成新的 url。

标签: android android-imageview android-glide


【解决方案1】:

您需要验证的第一件事是服务器/cdn 的响应标头或您使用的任何托管图像的标头。

让 Glide 知道你的图片(来自同一个 url)是否更新的唯一方法是通过缓存/ETAG 标头。

现在棘手的部分是:Glide 是一个图像缓存/加载库,它处理内存/磁盘缓存,但不执行实际的网络部分。它由 OkHttp 等第三方库处理,因此您需要扩展 glide 模块和/或配置网络库以以适合您应用的方式尊重缓存标头。

以下是 glide github 上的问题链接,它们将为您指明正确的方向:

https://github.com/bumptech/glide/issues/1257

https://github.com/bumptech/glide/issues/1847

https://github.com/bumptech/glide/issues/463

【讨论】:

  • 有没有例子说明如何做到这一点?
【解决方案2】:

请这样设置:-

Glide.with(context)
        .load(img_url)
        .apply(new RequestOptions()
        .placeholder(R.mipmap.personal_pic)
        .diskCacheStrategy(DiskCacheStrategy.ALL))
        .into(iv_profile_pic);

【讨论】:

  • 它不起作用。它只显示磁盘缓存中的旧图像而不是新图像。
  • 使用 .signature(new ObjectKey(file.lastModified())) 代替 .diskCacheStrategy(DiskCacheStrategy.ALL))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
相关资源
最近更新 更多