图片加载框架有哪些?他们之间的区别是什么?

1:ImageLoader

   优点:(1)支持下载进度的监听

      (2)可以在view滚动中暂停图片的加载

      (3)默认实现多种缓存算法,ImageLoader 默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等;

      (4)支持本地缓存文件名规则定义

   缺点:(1)不支持gif文图片加载

      (2)缓存机制没有和http的缓存很好的结合,完全是自己的一套缓存机制

2:Picasso

   优点:(1)自带统计监控功能,支持图片缓存使用的监控,包括缓存命中率,已使用内存的大小,节省的流量等

      (2)支持优先级处理

      (3)支持延迟到图片尺寸计算完成加载

      (4)支持飞行模式、并发线程数根据网络类型而变,手机切换到飞行模式或者网络类型变换时会自动调整线程池最大并发数

      (5)“无”本地缓存。Picasso 自己没有实现本地缓存,而由okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。

   缺点:(1)不支持gif文图片加载

      (2)默认使用ARGB_8888格式缓存图片,缓存体积大。

3:Glide

   优点:(1)图片缓存,媒体缓存,支持GIF,WebP,缩略图。甚至是Video。

      (2)支持优先级处理

      (3)与Activity/Fragment生命周期一致,支持trimMemory。

      (4)支持Okhttp、Volley,Glide默认通过UrlConnection获取数据,可以配合okhttp或是volley使用。实际 ImageLoader、Picasso 也都支持 okhttp、Volley。

      (5)内存友好,内存缓存更小的图片,图片默认使用RGB565而不是ARGB888。

   缺点:(1)清晰度差,但是可以设置

4:Fresco

     优点:(1)图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中,所以不会因为图片加载而导致oom, 同时也减少垃圾回收器频繁调用回收Bitmap导致的界面卡顿,性能更高。

        (2)渐进式加载JPEG图片, 支持图片从模糊到清晰加载。

        (3)图片可以以任意的中心点显示在ImageView, 而不仅仅是图片的中心。

        (4)JPEG图片改变大小也是在native进行的, 不是在虚拟机的堆内存, 同样减少OOM

        (5)很好的支持GIF图片的显示

    缺点: (1)框架较大, 影响Apk体积,使用较繁琐

 

posted @ 2020-11-10 14:39  开发进行曲  阅读(305)  评论(0编辑  收藏  举报