Android开发Android开发经验谈Android技术知识

(一)Doodle - 精简的图片加载框架 - 概述篇

2023-03-26  本文已影响0人  呼啸长风

一、序

Doodle是我几年前发布的一个图片加载框架。
写Doodle的初衷:早期对包大小之类的还是很看重的,当时觉得Glide依赖包比较大,而我们需要的功能又比较简单,然后Picasso又不满足需求(比如不支持GIF),于是我写了个比Picasso还小,但功能强于Picasso的框架。
也由于当时的需求比较简单,所以功能实现得比较保守,比如支持加载视频缩略图,不支持自定义解码等。
时过境迁,如今大家对包大小已不太在意了,但秉着有始有终的想法,我一直想完成一个满意的版本。
其实去年就重构得差不多了,但想着要丰富一下测试场景,于是又补了一些用例,包括网络图片列表加载,以及一个相册组件。
如今基本是达成“满意的版本”了。

二、简单对比

网上流行的图片加载框架不少,有Universal-Image-Loader,Picasso, Glide, Fresco, Coil等,各有千秋。

特别提一下,关于方法数,新入行的朋友可能已经不太听说了。
早期的Android版本运行Dalvik虚拟机,最多支持64K方法,安装包总方法数超过64K需要做适配,可以参考:https://developer.android.com/studio/build/multidex?hl=zh-cn
统计方法数可以用这个插件:https://github.com/KeepSafe/dexcount-gradle-plugin
目前很多APP支持的最低版本都在Android 5.0以上,方法数多少已不重要,但可作为综合衡量代码复杂程度的因素之一吧。

各图片加载框架简要信息如下:

版本 包大小 方法数
Picasso 2.8 106k 527
Glide 4.15.0 809k 3746
Fresco 2.6.0 3.5M 5923
Coil 2.2.2 505k 2000
Doodle 2.0.2 93k 459

Doodle如今发布2.0版本,依然不改初衷,维持了简洁的实现。
Doodle不依赖第三方库(OkHttp, AndroidX等),不需要注解和配置混淆,开箱即用。

三、特性

Doodle虽然只有几百个方法,不到百K的大小,但“麻雀虽小,五脏俱全“。
其实现的功能包括但不限于以下列表:

Doodle 2.0在功能方面可以说是很接近Glide了;
性能上,我对比了下Doodle和Glide在加载本地媒体文件的速度,基本持平(每次测量结果两者都有浮动,综合来看耗时差不多)。

四、后序

本文并不是要建议大家改用Doodle什么的,相反,在没有十分必要的情况下,不建议变更框架。
所在项目就做过一次从Glide迁移到Fresco,数据劣化,一时半会不好找原因,但项目进度不等人,于是又匆匆回滚到Glide……
已经上线的项目,不建议迁移到Doodle;如果是要开新项目,可以考虑一下。
同时也欢迎各位朋友提PR或者建议。
Github地址: https://github.com/BillyWei01/Doodle

Doodle的用法和实现细节,就不放在这篇文章里了,另外开了两篇做具体讲述。

上一篇 下一篇

猜你喜欢

热点阅读