美文网首页相机-相册
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