粗谈android图片框架优缺点:Glide、picasso、Fresco、ULM

Android 图片选择框架ImagePicker android图片浏览器框架_缓存

Glide

  • 优点:
    1.多样化媒体加载
    Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。甚至是 Video
    2.生命周期集成
    通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来
    3.高效的缓存策略
    A. 支持Memory和Disk图片缓存
    B. Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸
    C. 内存开销小
    默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,这个内存开销要小一半。
    4.Android关于图片内存计算,共有四种,分别是:
    1.ALPHA_8:每个像素占用1byte内存
    2.ARGB_4444:每个像素占用2byte内存
    3.ARGB_8888:每个像素占用4byte内存(默认,色彩最细腻=显示质量最高=占用的内存也最大)
    4.RGB_565:每个像素占用2byte内存(8bit = 1byte)
  • 缺点:
  1. 网络加载性能比较差, 网络不好时,加载速度慢;
  2. 加载GIF图片消耗内存交大;
  3. 包比较大;

Picasso

  • 优点:
    1.Picasso是全尺寸下载图片;
    2.Picasso默认的缓存格式为ARGB_888;
    3.链式调用,使用简单;使用比较简单,一行代码就可以加载图片并显示
    4.具有一般图片框架的基础功能;
    5.方便的图片转换;(图片高斯模糊,添加圆角,做度灰处理,圆形图片);
    6.加载过程监听和错误处理;
    7.自动添加磁盘和内存二级缓存;
    8.支持多种数据源加载;
    9.框架体积小
  • 缺点:
    1.Picasso默认不支持Gif图片加载。Picasso库很小,类也很少。
    2.缓存的图片是没有缩放的,并且默认使用ARGB_8888格式缓存图片,缓存体积较大;

Fresco

  • 优点:
    1.内存自动回收。图片不可见时,会及时自动释放所占用的内存,尽可能地避免OOM ;
    2.三级缓存机制。两级内存缓存(解码的与未解码的)+一级磁盘缓存,提升加载速度,节省内存占用空间 ;
    3.支持各种加载场景。如动图加载,高斯模糊等常见的图片加载场景。另外还提供了独特的渐进式加载,先加载小图再加载大图,加载进度等功能(很强大) ;
    4.可以显示动画GIF图片和WebP;
  • 缺点:
  1. 侵入性较强,必须使用官方提供的SimpleDraweeView代替ImageView加载图片;
  2. 框架比较大,造成Apk体积变大;
  3. 操作步骤比较繁琐;

ULM

  • 优点:
    1.最早开源的图片缓存框架,比较稳定,加载速度适中;
    2.支持下载进度监听;
  • 缺点:
  1. 不支持GIF图片加载;
  2. 使用比较繁琐,缓存机制和http的缓存机制结合不好;
  3. 已经不再更新了;