0°

Android 图片的三级缓存 及 图片压缩

内容预览:
  • 如若改成软引用SoftReference(内存不够时,垃圾回收器会考虑回收),仍...~
  • 解决办法:可以用LruCache来解决上述内存不回收或提前回收的问题~
  • least recentlly use 最少最近使用算法 它会将内存控制在一定的大小内, ...~

始发于微信公众号: 程序员小乐

Android 图片的三级缓存 及 图片压缩

为什么需要图片缓存

默认给每个应用只分配16M的内存,所以如果加载过多的图片,为了防止内存溢出,应该将图片缓存起来。图片的三级缓存分别是:

  1. 内存缓存

  2. 本地缓存

  3. 网络缓存

其中,内存缓存应优先加载,它速度最快;本地缓存次优先加载,它速度也快;网络缓存不应该优先加载,它走网络,速度慢且耗流量。

三级缓存的具体实现

网络缓存

  • 根据图片的url去加载图片

  • 在本地和内存中缓存

Android 图片的三级缓存 及 图片压缩

Android 图片的三级缓存 及 图片压缩

Android 图片的三级缓存 及 图片压缩

Android 图片的三级缓存 及 图片压缩

本地缓存

  • 两个方法:设置本地缓存,获取本地缓存

Android 图片的三级缓存 及 图片压缩

Android 图片的三级缓存 及 图片压缩

内存缓存

  • 两个方法:设置内存缓存,获取内存缓存

  • 问题: 

  1. 如果使用HashMap存储图片时,当图片越来越多时,会导致内存溢出,因为它是强引用,java的垃圾回收器不会回收。

  2. 如若改成软引用SoftReference(内存不够时,垃圾回收器会考虑回收),仍有一个问题:在android2.3+, 系统会优先将SoftReference的对象提前回收掉, 即使内存够用。

  • 解决办法:可以用LruCache来解决上述内存不回收或提前回收的问题。least recentlly use 最少最近使用算法 它会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定

  • Android 图片的三级缓存 及 图片压缩

    Android 图片的三级缓存 及 图片压缩

    图片压缩

    Android 图片的三级缓存 及 图片压缩

    看完本文有收获?请转发分享给更多人

    关注「技术联盟之巅」,提升编程技能

    Android 图片的三级缓存 及 图片压缩

    每当我看到你的点赞、评论、或打赏都会感觉特别激动和高兴,真希望正如你看我的文章一样。我们共同努力。如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。

    赞助方式如下链接:

    http://blog.csdn.net/xiaole0313/article/details/52333666


    如果您觉得不错,请别忘了分享到您的朋友圈让更多的人看到!! 您的举手之劳,就是对我最好的支持,非常感谢!

    版权声明:【我们尊重原创。此篇干货,版权属于原作者。部分文章推送时因种种原因未能与原作者联系上,若涉及版权问题,敬请原作者联系我们,立即处理。】

    本文由吧主分享:http://blog.csdn.net/xiaole0313

    推荐文章:


    【技术群】279126311 [满]

    【技术群】484572225 [未]

    如果你有好的文章想和大家分享,欢迎投稿,直接向我投递文章链接即可。投稿邮箱:[email protected]

    欢迎扫描关注我们的微信公众号(),不要错过每一篇干货~

    一键关注我们微信公众号 

    以上就是:Android 图片的三级缓存 及 图片压缩 的全部内容。

    本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
    Email:[email protected]


    0 条回复 A 作者 M 管理员
      所有的伟大,都源于一个勇敢的开始!
    欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论