ImageLoader、Glide、Picasso、Fresco比较

缺点
  • ImageLoader:universalImageLoader虽然好但是配置多,缓存机制没有和http的缓存很好的结合,是自己的一套缓存机制,而且ImageLoader已停止维护。
  • Glide:glide的方法数量比universalImageLoader多了1000多个,容易遇到64k问题;
  • Picasso:不支持 GIF,并且它缓存的图片是未缩放的,使用ARGB_8888格式缓存图片,所以加载过多的大图片时,Picasso可能会OutOfMemoryError(Glide相反);
  • Fresco:框架较大,影响Apk体积、使用较繁琐;
优点
  • Fresco:

    1. 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存,
      所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom(其实它是占用了很多内存的), 同时也减少垃圾回收器频繁调用回收 Bitmap
      导致的界面卡顿, 性能更高.
    2. 渐进式加载 JPEG 图片, 支持图片从模糊到清晰加载
    3. 图片可以以任意的中心点显示在 ImageView, 而不仅仅是图片的中心.
    4. JPEG 图片改变大小也是在 native 进行的, 不是在虚拟机的堆内存, 同样减少 OOM;
    5. 很好的支持 GIF 图片的显示
  • Picasso: 使用方便, 一行代码完成加载图片并显示, 框架体积小;

  • Glide:可以说是 Picasso 的升级版,并且支持 GIF 图片和本地视频图片加载, 图片缓存也会自动缩放, 默认使用RGB_565 格式缓存图片

总之

Picasso包比 Glide包体积小很多且图像质量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的长处是处理大型的图片流,如 gif、video,如果要制作视频类应用,Glide 当为首选。

Fresco 可以说是综合了之前图片加载库的优点,但它的包体积太大,按体积进行比较:Fresco>Glide>Picasso,Fresco因为主要占用的是系统的匿名共享内存, 而不是虚拟机的堆内存,这在图片较多的应用中更能凸显其价值,如果应用没有太多图片需求,不推荐使用 Fresco。

Glide和Fresco可以绑定到Activity的生命周期中,在生命周期结束时会自动释放掉内存占用(Activity未被占用时),但是Picasso和ImageLoader需要自己手动去释放

你可能感兴趣的:(ImageLoader、Glide、Picasso、Fresco比较)