最近项目当中在图片加载过程中有一些新的需求,所以研究了一下时下最火的三个图片加载框架(Fresco、Glide与Picasso)。今天就简单的记录一下,方便以后查看。
- Fresco
1,十分强大,内存管理不用愁,不用担心OOM
2,自带图片加载过程中淡入效果,用户体验好
3,图片加载时可直接在布局中设置加载动画等等,减少代码量
缺点:
1,必须使用fresco自定义的控件,而不是android原生的ImageView,以后想要换其他图片加载框架时会比较麻烦,需要更改xml布局文件
2,方法数过多,将近4K的方法,对于较大的项目来说,很可能就是压死骆驼的最后一根稻草
3,必须全套使用fresco的图片加载,否则从缓存中获取一个bitmap都异常费劲
- Glide
1,加载图片速度快
2,支持Gif、WebP、缩略图,甚至是Video
3,根据Activity/Fragment生命周期自动管理请求
4,默认使用RGB565格式缓存图片,缓存图片大小以imageview的尺寸为准
5,占用内存小,相较于Picasso(同一图片),但是放大图片之后显示效果又比Picasso差一点
6,方法数为2678,也不小
- Picasso
2,默认使用ARGB8888格式,以图片原尺寸缓存图片
3,支持优先级处理,即每次任务调度前都会选择优先级高的任务
4,并发线程数根据网络类型而发生改变,手机更换网络类型时,会自动调整线程池最大并发数。比如wifi最大并发为4,4G为3,3G位2
以下是三个图片加载框架的GitHub地址:
总结从项目体积角度进行比较:Fresco>Glide>Picasso,Fresco可以说是综合了之前图片加载框架的所有优点,尤其是在5.0以下的内存优化方面做的非常好,所以在图片较多的应用中更能凸显其价值,如果应用没有太多图片需求的话,还是推荐使用Glide。因为Glide相较于Picasso来说,功能更全面,在gif方面是其杀手锏,内存方面来说也是比后者优秀很多。