常见的图片加载框架

作者: LiChengZe_Blog | 来源:发表于2019-05-26 11:05 被阅读0次

    ImageLoader: Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用

    (1) 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等。

    (2) 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置。

    (3) 支持图片的内存缓存,文件系统缓存或者SD卡缓存。

    (4) 支持图片下载过程的监听。

    (5) 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存。

    (6) 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,RecycleView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片。

    (7) 提供在较慢的网络下对图片进行加载。

    (8) 默认实现多种内存缓存算法 这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等。

    Picasso:Picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能

    (1) Picasso已经解决了在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位的问题。

    (2) 使用复杂的图片压缩转换来尽可能的减少内存消耗。

    (3) 自带内存和硬盘二级缓存功能

    Glide: Glide是一个高效、开源、 Android设备上的媒体管理框架,Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。

    (1) 图片缓存和媒体缓存,它支持 Gif、WebP、缩略图。甚至是 Video。

    (2) 支持优先级处理。

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

    (4) 支持 okhttp、Volley 。

    (5) 内存缓存更小图片。

    Fresco:Fresco 是 Facebook 在2017年上半年开源的图片缓存

    (1) 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存, 所以, 应用程序有更多的内存使用,不会因为图片加载而导致oom, 同时也减少垃圾回收器频繁调用回收Bitmap导致的界面卡顿,性能更高。

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

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

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

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

    总结:

    Picasso所能实现的功能,Glide都能做,无非是所需的设置不同。但是Picasso体积比起Glide小太多如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,体积会小很多(Square全家桶的干活)。Glide的好处是大型的图片流,比如gif、Video,如果你们是做美拍、爱拍这种视频类应用,建议使用。Fresco在5.0以下的内存优化非常好,代价就是体积也非常的大,按体积算Fresco>Glide>Picasso,不过在使用起来也有些不便。

    相关文章

      网友评论

        本文标题:常见的图片加载框架

        本文链接:https://www.haomeiwen.com/subject/sjsxtctx.html