android - 如何使用 glide 库在 recyclerview 中加载更新图像而不是旧图像

标签 android android-imageview android-glide

我实现了 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)

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

最佳答案

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

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

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

这里是 glide github 上问题的链接,可以为您指明正确的方向:

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

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

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

关于android - 如何使用 glide 库在 recyclerview 中加载更新图像而不是旧图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460458/

相关文章:

android - Android:编译时出错:我将Exoplayer库从r2.5.3更改为2.9.0

android - 图像查看器 fragment (Android)

android - 如何使用 Glide v4.0.0RC1 从 Url 加载 Image 到 ImageView

java - 将动画 Drawable 保存为 GIF 文件?

android - HTML 站点图像背景在 iPhone 上显示错误

java - 显示剪切位置

java - 在android中创建一个随机数并将其保存到android数据库中?

android - 用于设置 ImageView 的 AsyncTask

android - ImageView 适合高度保持纵横比

Android Glide 图像未显示在第一个屏幕上