Android图片加载框架

本文对比了ImageLoader、Glide、Picasso和Fresco四种图片加载框架。ImageLoader虽已停止维护但仍好用;Glide继承并优化了Picasso;Fresco专为解决内存溢出而设计。针对不同应用场景推荐合适的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前图片加载框架也是繁多,目前常用的有以下几种:ImageLoader(2011年),Picasso(2013年),Glide(2012年),Fresco(2015年)四种。其中ImageLoader出现的最早也应用的最为广泛。早期出现的ImageLoader首要关注的是如何尽快的加载图片,然后需要自己动手处理图片防止内存溢出。后面,大家觉得很烦啊,于是一些即注重加载速度,又减少内存溢出的网络加载框架就出现了,就像后三种。(我在一些群里曾听到一些开发者说“ImageLoader不行啊,经常造成内存溢出啊,Fresco就不会,所以ImageLoader已经过时了”之类的话,虽然我个人能力也比较一般,但是当遇到问题的时候我首先想的是“我是不是忘记处理什么?是不是我的能力有问题,而不是质疑框架,毕竟框架是死的,人是活的”)

这些加载库各有优缺点,需要自行调研之后根据业务选择,这里我选择了加载速度较快,体积更小的Glide作为网络加载库。

这里我们对ImageLoader,Glide、Picasso、Fresco做个简单的对比: ImageLoader虽然已经停止维护了,但是仍然比较好用,图片加载不多的场景下推荐使用。

Glide在Picasso基础上二次开发而来,沿袭了Picasso以往的简洁风格,并做了大量优化。

Glide Vs PicassoGlidePicasso
图片格式默认RGB_565,支持动态图默认RGB_ARGB_8888,不支持动态图
内存占用默认情况下比Picasso小一半
磁盘缓存根据ImageView的大小来缓存相应的图片只缓存原始尺寸的图片
包体积比Picasso大
加载速度大部分情况下比Picasso快

Fresco重点关注图片加载导致的内存溢出问题。和传统做法不一致,Fresco将图片资源放在虚拟机管理内存之外的Native堆当中,因此该部分内存不占用App内存。但是由于虚拟机无法管理该区域,因此Fresco自行实现了图片资源的回收机制。由于是放在Native堆当中的,因此这部分是用C++来写的,因此阅读难度相对较大,另外Fresco这个库也相对较大,会增加2M左右的体积。在这个流量不值钱的年代,增加的这点体积好像也算不了什么?

总结,如果你喜欢偷懒,又不擅长处理内存溢出问题,而且你的应用大量使用图片的场景下,推荐使用Fresco。其他场景下,优先选择Glide吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值