前言

Android发展到今天,已经出现了很多优秀的图片缓存函数库,开发人员可以根据实际需求进行选择,传统的图片缓存方案中设置有两级缓存,分别是内存缓存和磁盘缓存。再Facebook推出的Fresco中,它增加了一级缓存,也就是Native缓存,这极大地降低了使用Fresco的APP出现OOM的概率。


BitmapFun

BitmapFun函数是Android官方教程中的一个图片加载和缓存示例,对于简单的图片加载需求来说,使用BitmapFun就足够了,再早期的Android APP开发中使用较多,后来随着越来越多成熟强大的函数库的出现,BitmapFun也渐渐退出实际项目开发的舞台。但作为一个入门图片的教程,它依然起着不可忽视的作用,毕竟万变不离其宗。


Picasso

Picasso是著名的Square公司众多开源项目中的一个,以著名画家毕加索为名,连Sample app都使用毕加索的名画作为例子。它除了实现图片的瞎子啊和二级缓存功能,还解决了常见的一些问题。

  • 在adapter中正常的处理ImageView回收和下载的取消

  • 使用尽量小的内存实现复杂的图像变换

  • 在Picaso中,我们使用一行代码即可实现图片下载并渲染到ImageView中。

Picasso.with(context) .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg").into(ivImg);

Glide

Glide是Google推荐的用于Android平台上的图片加载和缓存函数库。这个库被广泛应用再Google得开源项目中,Glide和Picaso有90%的相似度,可以说就是Picaso的克隆版本,只是在细节上还有不少区别。

  • Glide为包含图片的滚动列表做了尽可能流畅的优化

  • 除了静态图片,Glide也支持GIF格式图片的显示。

  • Glide提供了灵活的API可以让开发者方便地替换下载图片所用的网络函数库,默认情况下,它使用HttpUrlConnection作为网络请求模块,开发者也可以根据自己项目的实际需求灵活使用Google的Volley和Square的OkHttp等函数库进行替换。**


Fresco

Fresco是Facebook开源的功能强大的图片加载和缓存函数库,相比于其他图片缓存库,Fresco最显著的特点是具有三级缓存:两级缓存和一级磁盘缓存。它的主要特性如下:

  • 渐进式地加载JPEG图片

  • 显示GIF和WebP动画

  • 可扩展,可自定义的图片加载和显示。


Android-Universal-Image-Loader

Android-Universal-Image-Loader简称UIL,是Android平台老牌的图片下载和缓存函数库,功能强大灵活且高度自定义,它提供一些列配置选项,并能很好地控制图片架子啊和缓存的过程。使用者众多,早起的Android开发者都接触过,现在仍然很多项目中使用。UIL也支持二级缓存,它的主要特性如下。

  • 同步或者异步的多线程图片加载

  • 高度可自定义:线程池、下载器、解码器、内存和磁盘缓存,图片显示选项等

  • 每张图片的显示支持多种自定义选项:默认存根图片、缓存切换、解码选项、bitmap处理和显示等。

  • 图片可缓存再内存或者磁盘(设备的文件系统或者SD卡)上。

  • 可实时坚挺图片加载流程,包括下载进度


最后来看一下如果引入这些函数库,会给APP增加多大的空间。

  • BitmapFun:71KB

  • Picasso:120K

  • Glide:475K

  • Fresco:3.4M

  • Android-Universal-Image-Loader:162K

图片函数库的选择需要根据APP的具体情况而定,对于严重依赖图片缓存的APP,例如壁纸累,图片社交类APP来说,可以选择最专业的Fresco。对于一般的APP,选择Fresco会显得比较重,毕竟Fresco3.4M的体量摆在这。根据APP对图片的显示和缓存的需求从低到高,我们可以对以上函数库做一个排序。

BitmapFun < Picasso < Android-Universal-Image-Loader < Glide < Fresco

值得一提的是,如果你的APP计划使用React Native进行部分模块功能开发的话,那么在基础函数库选择方面需要考虑和ReactNative的依赖库的复用,这样可以减少引入React Native所增加的APP大小,可以复用的函数库有:OkHttp,Fresco,jackson-core

Android网络图片加载框架的选择相关推荐

  1. Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    本文转载自郭神的Glide分析系列:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二 ...

  2. Android图片加载框架 Glide 4 的用法

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  3. Android图片加载框架——Glide(Glide v4)

    原文地址 Android图片加载框架--Glide(Glide v4) 前言 android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示图片,如果我们 ...

  4. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  5. Android图片加载框架最全解析(五)

    由此我们可以得知,在没有明确指定的情况下,ImageView默认的scaleType是FIT_CENTER. 有了这个前提条件,我们就可以继续去分析Glide的源码了.当然,本文中的源码还是建在第二篇 ...

  6. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  7. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  8. Android图片加载框架

    这篇文章主要和大家一起动手编写Android图片加载框架,从内部原理到具体实现来详细介绍如何开发一个简洁而实用的Android图片加载缓存框架,感兴趣的小伙伴们可以参考一下 开发一个简洁而实用的And ...

  9. Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)

    两款比较优秀的开源图片处理库框架:Universal-ImageLoader和Picasso. Universal-ImageLoader 简介: Universal-ImageLoader是目前An ...

最新文章

  1. java面向对象基础代码_Java基础语法——面向对象(1)
  2. 2020 最新自动驾驶技术报告出炉:Waymo、特斯拉、沃尔沃技术方案大起底
  3. IDEA 打可执行jar包(maven项目)
  4. boost的chrono模块模拟线程接口的测试程序
  5. android Q版本外部存储问题以及获取空间大小问题
  6. 统计学 计算机论文,统计学课程论文范文
  7. To B生意的私域流量,你应该知道的10件事儿
  8. linux间隔一定时间访问指定url
  9. oracle利用游标添加数据库,Oracle数据库游标的类型及使用实例全解
  10. VMware vCenter Server 的内部版本号和版本 (2143838)--2020-10-27 更新
  11. Hinton胶囊网络代码正式开源,5天GitHub fork超1.4万
  12. python抓取网页内容并下载图片
  13. c语言学生成绩管理系统总结
  14. 如何选拔人才-人力资源探讨
  15. 认识CleanMyMac 3破解版的危害
  16. 芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
  17. C# 读取网卡、设置网上、自动连接Wifi
  18. Mac IntelliJIDEA非正常关闭解决(reopen失败)
  19. 大屏数据展示,5.5寸大屏幕手机更受消费者喜爱
  20. 【markdown】表格合并单元格

热门文章

  1. WPS强占8080端口
  2. win10以太网无法连接网络解决办法
  3. Python数据分析及可视化实例之“Pandas“
  4. 蓝桥青少竞赛考纲,一文须知【Python 篇】
  5. Android设计模式-12-备忘录模式
  6. Go语言自学系列 | golang函数的参数
  7. 微软推出Windows 11 RP Build 22000.1163版 修复打印队列发生错误等问题
  8. 易中天讲座的十句人生感悟
  9. 1024•假如程序员心想事成
  10. 如何优化我的世界服务器,Minecraft服务器优化教程-搬运