图片缓存第三方库

实现看这里 -> 图片库的封装实践


引文

目前比较主流的开源第三方库有这几个:Fresco、Glide、Android-Universal-Image-Loader(UIL)、picasso、Cube ImageLoader
有点多,先排除掉一两个,Cube ImageLoader是淘宝使用的库,github上的文档已经重定向到fresco,直接不看了;picasso性能上也是比Glide、Fresco差,还有更好的选择的情况下,暂时略过了。重点对比在Fresco、Glide、UIL。

Fresco

https://github.com/facebook/fresco
facebook提供的一个开源库,文档很全,更新很频繁,功能很全,略重

优点:
  • 0、能满足基本要求、可选要求
  • 1、多线程图片加载/下载
  • 2、支持渐进性图片加载(先低清,后高清)(jpeg/webp)
  • 3、支持webp、支持大GIF图
  • 4、内存优化得最好
  • 5、文档很全
缺点:
  • 1、很重(大/2M+)
  • 2、使用到原生的支持(使用ashmem,优化android5.0以下bitmap对象回收)
  • 3、需要使用/继承 到它提供的DraweeView(MVC模型,DraweeView;DraweeView 是 Fresco 的“门面”,负责显示由 DraweeHierarchy 提供的数据(Placeholder、Actual Image、Progress Drawable etc,DraweeController 作为幕后)

Glide

https://github.com/bumptech/glide
bumptech提供的,google推荐的一个库(2014 Google IO),比较轻

优点:
  • 0、能满足基本要求
  • 1、比较轻(465K),在性能方面也能媲美Fresco
  • 2、有内存缓存、磁盘缓存策略
  • 3、有生命周期的概念(主要是对请求进行pause,resume,clear),而且其生命周期与Activity/Fragment的生命周期绑定。
缺点:
  • 1、近一年没怎么更新了,对一些新特性也没有支持到(webp等)

Android-Universal-Image-Loader(UIL)

https://github.com/nostra13/Android-Universal-Image-Loader
现在使用最广的开源库,支持主流图片缓存的绝大多数特性

优点:
  • 0、能满足基本要求
  • 1、多线程图片加载/下载
  • 2、可以自定义配置、多级缓存、能监听到图片加载/下载进度
缺点:
  • 1、对一些新特性支持不到(jpeg、webp、https)
  • 2、15年11月后停止了维护

分析:

  • 0、UIL已经没更新了,暂时不考虑了。
  • 1、如果考虑支持https/jpeg/webp等新的特性,用Fresco其实更好。不过缺点也很明显,就是很重;image view层面也要继承它提供的一个基类。
  • 2、如果不考虑这些新特性,用Glide会好一点,理由是比较轻,而且性能上也可以和Fresco可以媲美。
3、实际对比

Fresco 提供了一个简单的对比的例子:
https://github.com/facebook/fresco/tree/master/samples/comparison/src/main/java/com/facebook/samples/comparison
单从对比的例子来看,Glide在加载本地资源上是最流畅的,网络方面的对比不是很明显。

结论:

虽然个人比较推荐使用Fresco。一个是性能是最好的,另一个是,如果要使用webp或jpeg会简单一点,还有一个是可以逼自己去Handle。但是Fresco太重了,适合很多图片的应用。

如果是轻量级的话,还是建议用Glide

PS:我是如何封装的

图片库的封装实践

参考


[1] : 图片缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值