ImageLoader、Fresco、Picasso、Glide图片加载框架类比

ImageLoader

  • 优点

    • 支持本地缓存文件名规则定义
    • 支持下载进度监听
    • 内存缓存和磁盘缓存
    • 默认实现多种内存缓存算法,如Size最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等
    • 可以在View滚动中暂停图片加载,通过PauseOnScrollListener接口可以在View滚动中暂停图片加载
  • 缺点

    • 配置比较麻烦
    • 已停止更新
    • HttpClient已被Google放弃,HttpClient存在API数量过多,扩展困难

Fresco

  • 优点

    • 内存自动回收,图片不可见时,会计时自动释放所占用的内存,尽可能地避免OOM
    • 三级缓存。两级内存缓存(解码和未解码)+ 一级磁盘缓存。提升加载进度,节省内存占用空间
    • 内存缓存分别为bitmap缓存和未解码的图片缓存,这样既可以加快图片的加载速度,又能节省内存的占用,文件缓存和未解码内存缓存相似,文件缓存存储的是未解码的原始图片。另外,在app切换到后台时,Fresco从会自动清理两级的内存缓存支持各种加载场景。如动图加载,高斯模糊加载,还提供了渐进式加载,先加载小图再加载大图
    • 支持优先级处理
    • 加载进度的监听
    • 支持多种自定义图片加载过程
    • 推按可以以任意的中心店显示在ImageView,而不仅仅是图片的中心
    • 很好的支持gif加载
    • 缓存原始图像
  • 缺点

    • Fresco比较重量级,体积较大
    • Fresco注入性比较强,用法相对繁琐
    • 必须使用SimpleDraweeView道题ImageView加载显示图片
    • 显示图片必须指定图片的宽高

Picasso

  • 优点:

    • Picasso采用ARGB-8888,加载的是全图,图片质量和清晰度较高
    • 支持优先级处理。每次任务调度钱会选择优先级较高的任务
    • 支持延迟到图片尺寸计算完成加载
    • 根据网络变化自动调整线程池最大并发数
    • 两级缓存,内存缓存和磁盘缓存,图片加载顺序是LruCache -- DisLruCache --- NetWork
  • 缺点:

    • 采样率过高,倒置出现OOM异常的概率比glide高
    • 不能加载Gif图片
    • 缓存侧率和加载速度不足

Glide

  • 优点

    • 支持优先级处理
    • 支持Gif图片的加载
    • 图片占用内存回收及时,能减少因内存不足造成的崩溃,生命周期和Activity/Fragment一致,默认Bitmap格式是RGB_565,减少内存占用,不单可以缓存图片,还可以缓存媒体
    • 有内存和磁盘缓存
    • 会根据ImageView控件尺寸获得对应大小的bit
  • 缺点

    • 使用的时候耗内存比较严重
    • 方法数量: Fresco > Glide > ImageLoader
    • 流畅度:Glide ≈ Fresco > ImageLoader
    • 体积大小: Fresco > Glide > Picasso
    • 内存消耗:Fresco > ImageLoader > Picasso > Glide

你可能感兴趣的:(ImageLoader、Fresco、Picasso、Glide图片加载框架类比)