1.哪三大图片加载框架?
1)
Picasso
2)
Glide
3)
Fresco
2.介绍:
Picasso :和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现。
Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),
Glide默认的Bitmap格式是RGB_565,比
Picasso默认的ARGB_8888格式的内存开销要小一半;Picasso缓存的是全尺寸的(只缓存一种),而Glide缓存的是跟ImageView尺寸相同的(即56*56和128*128是两个缓存) 。
FB的图片加载框架Fresco:最大的优势在于5.0以下(最低2.3)的bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。为什么说是5.0以下,因为在5.0以后系统默认就是存储在Ashmem区了。
3.总结:
Picasso所能实现的功能,Glide都能做,无非是所需的设置不同。但是Picasso体积比起Glide小太多如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,体积会小很多(Square全家桶的干活)。Glide的好处是大型的图片流,比如gif、Video,如果你们是做美拍、爱拍这种视频类应用,建议使用。
Fresco在5.0以下的内存优化非常好,代价就是体积也非常的大,按体积算Fresco>Glide>Picasso
不过在使用起来也有些不便(小建议:他只能用内置的一个ImageView来实现这些功能,用起来比较麻烦,我们通常是根据Fresco自己改改,直接使用他的Bitmap层)
第一、Gif的支持
Fresco 支持
Glide 支持
Picasso 不支持
ImageLoader 不支持
第二、内存与性能
1、Fresco:
FaceBook出品,
优点:(1)支持图像渐进式呈现
(2)大公司出品,后期维护有保障
缺点:(1)框架体积较大3M左右会增大apk的大小
(2)操作方式不是特别简单,有一定学习成本
特点:有两级内存一级文件的缓存机制,并且有自己特别的内存区域来处理缓存,避免oom
2、Glide:
谷歌员工出品,Google推荐的图片加载库,专注于流畅的滚动
优点:(1)加载速度极快
(2)框架体积小 四五百KB
缺点:(1)因为机制的选择不同,速度快了,但是图片质量低了 RGB565
特点:根据ImageView大小来进行缓存,也就是说一张图片可能根据展示情况来缓存不同尺寸的几份
3、Picasso:
Square出品,
优点:(1)图片质量高
缺点:(1)加载速度一般
特点:只缓存一个全尺寸的图片,根据需求的大小在压缩转换
4、Universal-Imager-Loader
sergey Tarasevice出品,
优点:(1)丰富的配置选项
缺点:(1)最近一次维护在15年底,后期有不维护的趋势,可能被当前图片框架替代
特点:三级缓存的策略