我是靠谱客的博主 专一硬币,最近开发中收集的这篇文章主要介绍Glide加载相同URL图片无法更新,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天和后台对接图片验证码的时候,发现用Glide加载图片时无法更新。

原因:在使用Glide加载图片时,如果设置了缓存,那么无论图片是否有了更新,只要URL不变,那么就会使用内存缓存或者磁盘缓存的图片,导致加载出来的图片没有更新的问题。

解决方法一:和后台商量加一个时间搓,从而改变URL。

private String urlGetPic = SmallUtil.getUrl() + "/cyxmweb/appKaptcha/kaptcha.jpg";//获取验证码图片URL
/* 获取图片验证码信息*/
private void getPicData() {
    String url = urlGetPic + "?" + System.currentTimeMillis();//添加时间搓防止URL相同,调用缓存数据
    RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic);
    Glide.with(this).load(url).apply(requestOptions).into(iv);
}

解决方法二:采取取消缓存的方式,这样是比较简单的操作

RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic)
        .skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE);//不使用内存缓存,磁盘缓存
Glide.with(this).load(urlGetPic).apply(requestOptions).into(iv);

解决方法三:无论本地图片网络图片,都可以使用另一个方法,就是使用Glide的方法.signature(Key signature),通过创建一个签名,然后在图片更新的时候,更改签名,达到重新加载的效果。该签名可以是个String,可以是图片更新的时间

 

    RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic)
                .signature(new ObjectKey(System.currentTimeMillis()));//通过签名的改变刷新
        Glide.with(this).load(urlGetPic).apply(requestOptions).into(iv);

最后

以上就是专一硬币为你收集整理的Glide加载相同URL图片无法更新的全部内容,希望文章能够帮你解决Glide加载相同URL图片无法更新所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部