java - 使用 Glide 时删除缓存

标签 java android caching android-glide

我知道这是一个非常基本的问题。我试图找到众多解决方案,但我无法理解它们。

我想要什么

将图像上传到服务器,作为返回,我得到了 URL,但问题是在使用此 URL 设置图像时,设置了旧图像。发生这种情况是因为 Glide 正在使用旧缓存而不是更新缓存。

如何解决这个问题。

Glide.clear(profilePic);

Glide.with(getApplicationContext())
    .load(url)
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .skipMemoryCache(true)
    .transform(new CircleTransform(MainProfile.this))
    .into(profilePic);

目前,图片已更改,但当我单击后退按钮并返回此 Activity 时,它会加载一张旧图片。像这样从缓存中加载图像。

//setting up the profile pic
Glide.with(getApplicationContext())
.load(userProfilePicUrl)
.asBitmap()
.centerCrop()
.into(new BitmapImageViewTarget(profilePic) {
    @Override
    protected void setResource(Bitmap resource) {
        RoundedBitmapDrawable circularBitmapDrawable =
                                RoundedBitmapDrawableFactory.create(MainProfile.this.getResources(), resource);
        circularBitmapDrawable.setCircular(true);

        profilePic.setImageDrawable(circularBitmapDrawable);
    }
});

问题是当我回到这个 Activity 时它显示旧图片而不是新图片。

最佳答案

RequestOptions 在最新版本的 Glide 中提供与类型无关的选项以使用 Glide 自定义加载。

制作一个RequestOptions 对象并在我们加载图像时使用它。

RequestOptions requestOptions = new RequestOptions()
    .diskCacheStrategy(DiskCacheStrategy.NONE) // because file name is always same
    .skipMemoryCache(true);

Glide.with(this)
    .load(photoUrl)
    .apply(requestOptions)
    .into(profile_image);

关于java - 使用 Glide 时删除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42025083/

相关文章:

java - 正则表达式最佳实践 : multiple patterns or single one with combined expression?

java - 从 Java 中提取 Lotus Notes 文档的完整 ACL

java - 如何按升序对段数组 (int left, int right) 进行排序,但如果 left(i)=left(i+1) 则根据 right(i) 和 right(i+1) 对其进行排序

java - 新对象覆盖以前创建的对象的数据

android - 一旦所有 EditText 字段不为空,启用按钮

android - Google 登录不适用于受信任的 Web Activity (TWA) 发行版 apk,但适用于调试 apk

java - 如何使用 JFileChooser.showSaveDialog(...) 设置建议的文件名?

android - 从登录 Activity 中忘记了 firebase 的密码

.htaccess - 如何使用 .htaccess 设置整个 jpg 文件夹的缓存过期时间

c# - ASP.NET MVC 3/Razor - 奇怪的缓存问题