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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值