文档章节

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

 谓之王也
发布于 2016/11/14 21:21
字数 475
阅读 77
收藏 0
点赞 0
评论 0

应用场景:

  手机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

 

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 8
码字总数 1937
作品 0
徐汇
2018-01-01 狗年的第一篇问题总结,URL不变的情况下,Glide加载图片不更新

序言 问题描述 触发条件 解决思路 查看glide缓存模块的wiki signature是什么 修改不了signature怎么办 总结 序言 发现这个问题源于17年最后一天的一个线上事故,昨晚八点多的时候后端哥们儿打...

fighting_goat
01/01
0
0
Android图片加载框架最全解析(六),探究Glide的自定义模块功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/72866313 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 不知...

sinyu890807
2017/10/09
0
0
android 主流框架

2016-05-27 APP架构师 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大...

码娃娃
2016/05/27
281
0
15 个 Android 通用流行框架大全

1. 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管...

oschina
2016/05/29
71.7K
31
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

转载请注明出处:http://blog.csdn.net/guolinblog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 本篇将...

sinyu890807
2017/12/19
0
0
Android通用流行框架大全

Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso ...

3kqing
2016/06/05
39
0
Android通用流行框架大全

缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库...

fxandroid
2016/11/23
11
0
Android通用流行框架大全

缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库...

冰色
2016/05/11
169
0
Android通用流行框架大全

Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso ...

恒源祥
2016/10/28
26
0
Android图片缓存之初识Glide

前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架。技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自...

丁佳辉
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring+jpaNo transactional EntityManager available

TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务i......

wpfc
9分钟前
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
11分钟前
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
14分钟前
1
0
[MicroPython]TPYBoard智能小车“飞奔的TPYBoard装甲一号”

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具...

bodasisiter
16分钟前
0
0
桌面虚拟化VDI(Virtual Desktop Infrastructure)

为了保证员工(客户)不把公司的资料复制、传输给别人。可以把员工平时办公放在服务器上做。所以使用桌面虚拟化。就是把一个服务器虚拟出很多桌面系统(如:windows)。 桌面虚拟化最大的优势...

王坤charlie
23分钟前
3
0
自我审视及职业规划

啊哈,不知不觉已经工作了3年了。程序员作为一门技术工作,如果分级的话我的能力如何呢?该怎么提升呢? 话说,我现在的能力属于中低级的层次吧,努力在向高级努力。为什么这么说呢: 因为我觉...

一口今心
26分钟前
3
0
《PHP和MySQL Web 开发》 第12章 MySQL高级管理

我决定好好写学习笔记了,对应上书上的目录和重要信息。不瞎jb写了。从这章开始吧,然后之前写的会编辑后重发。嗯,就酱。 12.1 深入理解权限系统 妈蛋 开头就卡住了。。。我先回去修改之前的...

十万猛虎下画山
27分钟前
1
0
Python 3.6:多态的实现

多态的作用不用多说,C++用如下条件来实现多态: 要有继承 要有虚函数函数重写 要有父类指针(父类引用)指向子类对象 实际上C++使用VPTR指针来完成这个事情,其是设计模式的基础,软件分层的基...

全部原谅
27分钟前
0
0
纯Python实现鸢尾属植物数据集神经网络模型[图]

纯Python实现鸢尾属植物数据集神经网络模型[图]: 尝试使用过各大公司推出的植物识别APP吗?比如微软识花、花伴侣等这些APP。当你看到一朵不知道学名的花时,只需要打开植物识别APP,拍摄一张...

原创小博客
29分钟前
2
0
2018安卓巴士开发者大会打造Android技术盛宴

2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性、专业性的安卓技术会议,将邀请来自爱奇艺、阿里、饿了么等知名企业的一线工程...

逆鳞龙
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部