Glide没有更新Android上相同URL的图像?

38

我有一张图片使用了相同的URL。当我多次更新这张图片时,它显示的是之前的图片。服务器上的图片和版本已经更新,但Glide没有显示新的图片。我希望每次都能获取到新的图片并将其缓存。

Glide.with(context)
        .load(Constants.COPY_LINK_BASE_URL + info.getDisplayPicture())
        .placeholder(R.drawable.ic_profile).dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.SOURCE)
        .signature(new (SettingManager.getUserPictureVersion(context)))
        .into(ivUserProfilePhoto);

我可以通过更改互联网连接来重现此错误,在某些互联网连接下,更改图像会按预期显示,而在其他互联网连接下,更改2到3次图像后它仍然保持不变。


您的缓存图像正在显示。请制作自己的磁盘缓存机制,并在服务器上有新图像可用时清除旧图像。查看此链接可能有帮助:https://github.com/bumptech/glide/wiki/Configuration#size - Raghunandan
2
可能是一个重复的问题,与 Captcha image cannot be refresh by using Glide 有关。 - Nouman Shah
在他的问题中,他没有使用签名 API,而我已经在使用它。 - Usman Saeed
11个回答

-1

看起来问题与 Glide 库本身有关,我找到了一个可以解决这个问题的技巧,只需在您的图像 URL 后面加上一个随机数作为查询,就像下面的示例代码一样,它解决了我的问题,希望对您也有所帮助。

        Random random = new Random();
        int randomInt = random.nextInt();
        Glide.with(context)
                .applyDefaultRequestOptions(new RequestOptions()
                        .circleCrop().diskCacheStrategy(DiskCacheStrategy.NONE))
                .load(ConstantVars.BaseUrl + userModel.getAvatarURL() + "?" + randomInt)
                .apply(new RequestOptions().error(R.drawable.himart_place_holder))
                .into(imageViewProfile);

它将使Glide在您请求时重新加载图像,就像没有缓存可供读取一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接