如何使用 glide 库在 recyclerview 中加载更新图像而不是旧图像
How to load updated image instead of old image in recyclerview using glide library
我实现了 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)
以上代码刷新整个列表,因为清除了整个缓存数据。我只需要在列表中显示新上传的图片。
您需要验证的第一件事是您的 server/cdn 的响应 headers 或您使用的任何托管您的图像的东西。
Glide 知道您的图片(来自同一个 url)是否更新的唯一方法是通过 cache/ETAG headers。
现在是棘手的部分:Glide 是一个图像 caching/loading 库,它处理 memory/disc 缓存但不执行实际的网络部分。它由 OkHttp 等第三方库处理,因此您需要扩展滑动模块 and/or 配置网络库以以适合您的应用程序的方式尊重缓存 headers。
这里是有关 glide github 的问题的链接,可以为您指明正确的方向:
https://github.com/bumptech/glide/issues/1257
请这样设置:-
Glide.with(context)
.load(img_url)
.apply(new RequestOptions()
.placeholder(R.mipmap.personal_pic)
.diskCacheStrategy(DiskCacheStrategy.ALL))
.into(iv_profile_pic);
我实现了 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)
以上代码刷新整个列表,因为清除了整个缓存数据。我只需要在列表中显示新上传的图片。
您需要验证的第一件事是您的 server/cdn 的响应 headers 或您使用的任何托管您的图像的东西。
Glide 知道您的图片(来自同一个 url)是否更新的唯一方法是通过 cache/ETAG headers。
现在是棘手的部分:Glide 是一个图像 caching/loading 库,它处理 memory/disc 缓存但不执行实际的网络部分。它由 OkHttp 等第三方库处理,因此您需要扩展滑动模块 and/or 配置网络库以以适合您的应用程序的方式尊重缓存 headers。
这里是有关 glide github 的问题的链接,可以为您指明正确的方向:
https://github.com/bumptech/glide/issues/1257
请这样设置:-
Glide.with(context)
.load(img_url)
.apply(new RequestOptions()
.placeholder(R.mipmap.personal_pic)
.diskCacheStrategy(DiskCacheStrategy.ALL))
.into(iv_profile_pic);