Android网络图片加载框架的选择

前言

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容