Glide缓存无法更新头像的解决办法

在使用Glide的进行头像更换的时候发现,当服务器图片资源已经更新,Glide不会重新加载URL,而是从缓存中读取旧的图片资源

解决方法

使用Glide的signature(Key signature)方法,通过创建一个图片修改时间签名,然后在图片更新的时候,更改时间签名,达到重新加载的效果。

注意:旧版本Glide中.signature()方法形参支持使用StringSignature,但在Glide 4.0里面这个方法不仅被移到RequestOptions中,而且形参改为key。但Key有一个使用相对方便的子类ObjectKey,构造方法以Object为参数

  1. 用户登录时,用sharedprefence存储的用户数据里,加入存储时间参数

     // 存储用户数据,UserMessages生成xml的文件名,MODE_PRIVATE是存储的格式
     SharedPreferences sp=getSharedPreferences("UserMessage", MODE_PRIVATE);
     SharedPreferences.Editor editor=sp.edit();
     //当前系统时间
     editor.putString("updateTime",String.valueOf(System.currentTimeMillis()));
     editor.commit();
    
    
  2. 用Glide显示图片

    //获取系统图片更换时间,若时间改变,Glide会重新加载并缓存新图
     String updateTime= sp.getString("updateTime", null);
     RequestOptions requestOptions=RequestOptions.circleCropTransform()
                                          .signature(new ObjectKey(updateTime));
     Glide.with(this).load(url).apply(requestOptions).into(iv_icon);
    
    
  3. 更换图像时,修改updateTime参数就可以了

     SharedPreferences.Editor editor=sp.edit();
     editor.putString("updateTime",String.valueOf(System.currentTimeMillis()));
     editor.commit();
    
    



参考链接
Glide 4.0 StringSignature 找不到类 https://www.jianshu.com/p/ed0993ca1490

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值