美文网首页相机-相册
Android 中图片加载 ImageLoader、Glide、

Android 中图片加载 ImageLoader、Glide、

作者: 因为我的心 | 来源:发表于2019-07-18 00:18 被阅读0次

前言:

四大图片缓存基本信息

image.png

一、 ImageLoader 网络加载框架

地址:https://github.com/nostra13/Android-Universal-Image-Loader
(1)优点:

  • 支持本地缓存文件名规则定义;
  • 默认实现多种内存算法;
  • 避免内存泄漏在可以 View 滚动的时候暂停;

(2)缺点:

  • 配置相当麻烦;
  • 作者已经停止更新;

二、 Glide 网络加载框架

地址:https://github.com/bumptech/glide
(1)优点:

  • 支持优先级处理;
  • 不仅支持静态图片还支持 Gif 图片、缩略图和 WebP;
  • 不单可以缓存图片,还可以缓存媒体;

(2)缺点:

  • 加载 Gif 图片时,如果最后一帧为透明,会出现闪烁的情况;
  • Glide 使用的时候消耗内存比较严重;

三、 Fresco 网络加载框架

地址:https://github.com/facebook/fresco

(1)优点:

  • 内存的管理;
  • Fresco 与 Glide 同样支持优先级处理;
  • 图片预览,渐进式显示效果和多图请求;
  • 两个内存缓存加上 Native 缓存构成了三级缓存
  • 支持流式,可以类似网页上模糊渐进式显示图片
  • 对多帧动画图片支持更好,如Gif 和 WebP图片;

(2)缺点:

  • Fresco 比较重量级,如果引入会明显增大项目;
  • Fresco 的注入性比较强;

四、 Picasso 网络加载框架

地址1:http://square.github.io/picasso/
地址2:https://github.com/square/picasso

(1)优点:

  • Picasso采用的 ARGB-8888,加载的是全图,图片质量和清晰度要比 Glide 要高;
  • Glide 是在 Picasso 的基础上进行第二次封装;

(2)缺点:

  • 采样率过高,导致出现 OOM 异常的概率要比 Glide 高很多;
  • 不能加载 Gif 图片;
  • 缓存策略和加载速度明显不足;

五、开发建议:

方法数量: Fresco > Glide > ImageLoader
流畅度分析:Glide ≈ Fresco > ImageLoader
按体积进行比较:Fresco > Glide > Picasso

  1. Glide 和 Picasso 都是非常完美的库。Glide 加载图像以及磁盘缓存的方式都要优于 Picasso,速度更快,并且 Glide 更有利于减少 OutOfMemoryError 的发生,GIF 动画是 Glide 的杀手锏。不过Picasso 的图片质量更高。如果使用 Glide,建议将 Bitmap 格式换成 ARGB_8888、让 Glide 缓存同时缓存全尺寸和改变尺寸两种。

  2. Picasso 所能实现的功能 Glide 都能做到,只是所需设置不同。两者的区别是 Picasso 比 Glide 体积小很多且图像质量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的长处是处理大型的图片流,如 gif、video,如果要制作视频类应用,Glide 当为首选。

  3. Fresco 可以说是综合了之前图片加载库的优点,其在5.0以下的内存优化非常好,但它的不足是体积太大,按体积进行比较:Fresco>Glide>Picasso,所以 Fresco 在图片较多的应用中更能凸显其价值,如果应用没有太多图片需求,不推荐使用 Fresco。

六、其它问题:

1. 什么是三级缓存?

  • 内存缓存:优先加载,速度最快;
  • 本地缓存:次优先加载,速度快;
  • 网络缓存:最后加载,速度慢;

2. 为什么要进行三级缓存?

  • 减少不必要的流量消耗;
  • 加载很慢,影响用户体验;
  • OOM 导致的频繁 GC;

3. 三级缓存原理:

  • 首次加载的时候通过网络加载,获取图片,然后保存到内存和 SD 卡中;
  • 之后运行 APP 时,优先访问内存中的图片缓存;
  • 如果内存没有,则加载本地 SD 卡中的图片;

相关文章

网友评论

    本文标题:Android 中图片加载 ImageLoader、Glide、

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