Picasso处理同一url,但资源变了的情况
2017-02-22 16:00
519 查看
问题:上传头像成功后,头像的url没变,加载头像时还是从缓存中根据url加载以前的图片。
这个问题,很多人遇到过。也受到很多同行的启发。
图片url不变,感觉不是很合理,这样会把缓存搞乱。
但是,作为程序员,我还是得好好想想改怎么解决这个问题。
1.既然是缓存引起的问题,那我首先考虑的是清除缓存。
使用Picasso.with(context).invalidate(path),毫无效果,
写这篇文章之后继续研究发现,Picasso.with(context).invalidate(path)删除的是内存缓存中的图片,磁盘缓存中的图片没有删除,所以还会出错。
删除磁盘图片缓存路径下的所有缓存图片,图片正常显示。
2.我能否不从缓存中读取数据,直接从网络去图片呢?
这个比较简单,Picasso有提供方法:
试了一下,可以正常加载头像。
可是,每次都从网络下载图片,是不是太浪费流量了,而且体验效果也不是很好。
我这边只是在上传图片成功后才强制从网络获取图片,其他地方都用缓存。
用这种方法处理,后面项目还是遇到一样的问题,这个方法并没有完美解决问题。。。
Tips:好记星不如烂笔头,我又来灌水了~~~
PS:后面仔细想了想,这个方法还有漏洞,也果然遇到了问题,最后我直接将磁盘缓存路径(详见我上篇文章)整个文件夹删了,再加载图片,没有再出现问题。(Picassp自带的删除缓存的方法删除的是内存缓存中的图片)
第一种方法的思路比较清晰,目前没出现问题。
这个问题,很多人遇到过。也受到很多同行的启发。
图片url不变,感觉不是很合理,这样会把缓存搞乱。
但是,作为程序员,我还是得好好想想改怎么解决这个问题。
1.既然是缓存引起的问题,那我首先考虑的是清除缓存。
使用Picasso.with(context).invalidate(path),毫无效果,
写这篇文章之后继续研究发现,Picasso.with(context).invalidate(path)删除的是内存缓存中的图片,磁盘缓存中的图片没有删除,所以还会出错。
删除磁盘图片缓存路径下的所有缓存图片,图片正常显示。
2.我能否不从缓存中读取数据,直接从网络去图片呢?
这个比较简单,Picasso有提供方法:
Picasso.with(context) .load(url) .fit() .memoryPolicy(MemoryPolicy.NO_CACHE) .networkPolicy(NetworkPolicy.NO_CACHE) .into(imageView)
试了一下,可以正常加载头像。
可是,每次都从网络下载图片,是不是太浪费流量了,而且体验效果也不是很好。
我这边只是在上传图片成功后才强制从网络获取图片,其他地方都用缓存。
用这种方法处理,后面项目还是遇到一样的问题,这个方法并没有完美解决问题。。。
Tips:好记星不如烂笔头,我又来灌水了~~~
PS:后面仔细想了想,这个方法还有漏洞,也果然遇到了问题,最后我直接将磁盘缓存路径(详见我上篇文章)整个文件夹删了,再加载图片,没有再出现问题。(Picassp自带的删除缓存的方法删除的是内存缓存中的图片)
第一种方法的思路比较清晰,目前没出现问题。
相关文章推荐
- SDWebImage 处理URL不变图片资源改变的情况2
- SDWebImage 处理URL不变图片资源改变的情况1
- Glide同一个url。但资源变了的情况处理
- linux磁盘空间短时间被未知资源大量占用情况处理
- Error #2044: 未处理的 IOErrorEvent:。 text=Error #2035: 找不到 URL这是flash加载外部资源时有时会遇到的问题,对于此问题解决如下
- 使用Json.NET出现“文档的顶层无效。处理资源 URl 时出错。第 1 行,位置: 1
- 默认情况下,struts2是无法处理以.do为后缀的请求url的
- SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)
- Url请求长度HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。
- 处理SDWebImage相同url,图片不同的情况
- Spring MVC静态资源url映射处理
- Linux磁盘空间短时间被未知资源大量占用情况处理
- Android网络图片处理——Picasso与HttpUrlConnection比较
- 使用BlockingQueue,多个线程同时处理同一类型的多个资源
- 图像处理网络资源
- 图像处理网络资源
- 在网上看到的有关资源文件处理的好办法
- IOCP中的socket错误和资源释放处理方法
- 查看Tomcat资源使用情况的方法~~(愿创)
- 96年lbc96327号提案---对于量化参数值越界的情况的处理方法