Picasso处理同一url,但资源变了的情况

问题:上传头像成功后,头像的url没变,加载头像时还是从缓存中根据url加载以前的图片。

这个问题,很多人遇到过。也受到很多同行的启发。

图片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自带的删除缓存的方法删除的是内存缓存中的图片)

第一种方法的思路比较清晰,目前没出现问题。

转载于:https://www.cnblogs.com/shenchanghui/p/6429381.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值