Android 图片的三级缓存 及 图片压缩
为什么需要图片缓存
默认给每个应用只分配16M的内存,所以如果加载过多的图片,为了防止内存溢出,应该将图片缓存起来。图片的三级缓存分别是:
内存缓存
本地缓存
网络缓存
其中,内存缓存应优先加载,它速度最快;本地缓存次优先加载,它速度也快;网络缓存不应该优先加载,它走网络,速度慢且耗流量。
三级缓存的具体实现
网络缓存
根据图片的url去加载图片
在本地和内存中缓存
本地缓存
两个方法:设置本地缓存,获取本地缓存
内存缓存
两个方法:设置内存缓存,获取内存缓存
问题:
如果使用HashMap存储图片时,当图片越来越多时,会导致内存溢出,因为它是强引用,java的垃圾回收器不会回收。
如若改成软引用SoftReference(内存不够时,垃圾回收器会考虑回收),仍有一个问题:在android2.3+, 系统会优先将SoftReference的对象提前回收掉, 即使内存够用。
解决办法:可以用LruCache来解决上述内存不回收或提前回收的问题。least recentlly use 最少最近使用算法 它会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
图片压缩
看完本文有收获?请转发分享给更多人
关注「技术联盟之巅」,提升编程技能
每当我看到你的点赞、评论、或打赏都会感觉特别激动和高兴,真希望正如你看我的文章一样。我们共同努力。如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。
赞助方式如下链接:
http://blog.csdn.net/xiaole0313/article/details/52333666
如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!
版权声明:【我们尊重原创。此篇干货,版权属于原作者。部分文章推送时因种种原因未能与原作者联系上,若涉及版权问题,敬请原作者联系我们,立即处理。】
本文由吧主分享:http://blog.csdn.net/xiaole0313
推荐文章:
http://blog.csdn.net/xiaole0313/article/details/47727741
【技术群】279126311 [满]
【技术群】484572225 [未]
如果你有好的文章想和大家分享,欢迎投稿,直接向我投递文章链接即可。投稿邮箱:ysle0313@gmail.com
欢迎扫描关注我们的微信公众号(ysle_0313),不要错过每一篇干货~
一键关注我们微信公众号 ysle_0313