glide等图片缓存框架替换缓存图片解决方案

应用场景:

  手机app 用户的头像地址 在服务器上是固定的,比如有些服务器喜欢以 用户手机或者用户id 作为唯一标识,那么用户头像地址看起来是这样的:

 http://xxx.com/headimage/uid_1233.jpg

  在app里重新设置头像之后,由于用户的头像地址是固定的,glide等缓存框架已经缓存了 url对应的图片,那么app的个人中心页面显示的头像还是原来旧的头像。

 

问题分析:

 1. 如果glide等框架提供类似这样的方法:  setCache(String url, Bitmap image)   这样修改头像之后,我们只需要调用一下这个方法,重新设置url对应的缓存     图片即可。

    如IOS 版本的图片缓存框架 SDWebImage, 里面有个方法 叫  saveCache:(UIimage*)image forKey:(NSString*)url    这个方法直接替换掉 本     地 以url为 key的缓存图片。

    可惜glide我并没有找到。

解决方案:

 

 

    对于有些图片框架,没有提供重新设置 url对应的缓存内容的api
    这个问题的解决方案是这样的:
    xxx.com/image/1.png 和xxx.com/image/1.png ?1469247425923
    这2个url 获取到的图片是一样的

    so,当你app里面更改了图片,而服务器里图片url是固定不变的, 你只需要在你 的url地址后面 加个 ?和一些字符串,如时间戳,那么用这个    新的url       替换你的旧的url,然后用 图片框架重新加载一遍。

    例如上面那个例子里:

     

if(头像上传成功了){
        String newURL=BCUtil.reSetHeadImageURL(mySharedPreferences.getUserLoginHeadURL());
        mySharedPreferences.saveUserLoginHeadURL(newURL); 
        Glide.with(AccountDetailActivity.this).load( mySharedPreferences.getUserLoginHeadURL()).into(image_head) ;
    }

    public static String reSetHeadImageURL(String oldURL) {
        String newURL;
        int position = oldURL.indexOf("?");
        if (position > 0) {
            newURL = oldURL.substring(0, position);
            newURL = newURL + "?" + System.currentTimeMillis();
        } else {
            newURL = oldURL + "?" + System.currentTimeMillis();
        }
       return newURL;
    }

欢迎加入我的交流群:416157653

 

转载于:https://my.oschina.net/u/3043165/blog/787766

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值