浅谈AsyncImageLoader和Glide加载本地图片性能对比

距离上一次写博客已经很长时间,主要原因还是因为太懒了,而最近心思又不在技术上所以才长时间没有跟新博客。这篇文章来简单说说Glide和AsyncImageLoader加载本地图片上的表现吧。

关于Glide的用法及源码解析可以参考郭霖大神的Glide博客专栏,虽然专栏中是以Glide 3.x版本进行源码解析的,但是对于Glide 4.x源码也就是大同小异了。

1、AysncImageLoader说明

网络上又各种版本的AysncImageLoader,基本都是通过线程池+ LruCache来异步加载缓存图片,而且大多异步加载的实际上都是网络图片,而本文中的AyncImageLoader异步加载的是本地图片,这个是基本区别,可以随便参考一个AsyncImageLoader源码,并在其中添加加载并缓存本地图片的代码逻辑。

2、Glide说明

Glide 4.x源码复杂但是用法却很简单,首先实例化RequestOptions类,根据这个类设置placeholder图标,以及大小等,然后同构一行代码即可加载本地图片

Glide.with(mContext).load(path).apply(requestOptions).into(tvImage);

就是这样一行简单的代码Glide就能为我们加载图片了,不论path传的是网络图片地址,还是本地图片地址,或者是视频地址,统统都不是问题。

Glide加载网络图片功能强大,并且提供了接口让我们可以选择其它网络框架来加载网络图片,比如我们可以选择OkHttp3来作为网络图片加载框架(Glide本身是基于原生HttpURLConnection来加载网络图片的)。但是研究发现Glide加载本地图片的效率实际上比不上AsyncImageLoader,因为Glide缓存图片是在主线程中进行的,而且Glide的复杂代码逻辑感觉也拖后腿。

3、测试结果

本人写了一个简单demo对二则加载本地图片速度进行了测试,结果加载并缩放到同样大小本地图片,AysncImageLoader基本是Glide的2/3,淡然这个肯定不准确,但是AsyncImageLoader加载本地图片的速度比Glide快这个是肯定的。

只比快肯定还不行,实际上demo中写了一个listview加载多张图片,测试加载多张图片时demo的native heap以及dalvik heap也发现,Glide加载多张本地图片的内存占用也比AsyncImageLoader大。

这里说明下heap通过命令行进行

adb shell dumpsys meminfo + packagename/pid

以上,其实想说明的是,我们不能神话了一些流行的第三方框架,在决定使用第三方框架的时候,需要研究透其工作原理的基础上,结合自己的项目实际需要对比测试,最终方能决定是否采用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值