图片加载框架对比分析

glide

Google推荐的图片加载库,专注于流畅的滚动。

1.优点 
1)使用RGB_565,内存占用比Picasso小一半。 
2)图片展示和页面的生命周期一致(对context有类型要求) 
3)相比Picasso,Glide在缓存策略和加载GIF方面略胜一筹 
减少了缓存文件的大小 
Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。 这样在下次显示的时候不需要重新调整大小,显示的会更快。 
4)在页面不可见时停止网络请求,停止对图片的解析操作。 
5)专注于流畅的滚动 
6)当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢? 
7)支持当你想清除掉所有的图片加载请求时 
8)同时因为Glide和Activity/Fragment的生命周期是一致的,因此gif的动画也会自动的随着Activity/Fragment的状态暂停、重放。Glide 的缓存在gif这里也是一样,调整大小然后缓存。 
9)支持gif 
但是从我的一次测试结果来看Glide 动画会消费太多的内存,因此谨慎使用。 
10)Glide还可以将任何的本地视频解码成一张静态图片。 
11)使用glide,你可以配置图片显示的动画,而Picasso只有一种动画:fading in。 
12)可以使用thumbnail()产生一个你所加载图片的thumbnail。

2.缺点 
1)Glide 功能强大,但代码量大、流转复杂。在较深掌握的情况下才推荐使用,免得出了问题难以下手解决。

3.性能分析 
比Picasso性能好一些。

4.风险(包大小等) 
包大小:1.3mb 
能否解决listview图片错位问题?可以

glide框架:点击打开链接

Picasso

1.优点 
1)picasso能够根据网络状态调整线程池的并发数量 
2)使用简单,源码简单易懂。Picasso 代码虽然只在一个包下,没有严格的包区分,但代码简单、逻辑清晰 
3)内部维护了一个监控类,能够实时反馈内存缓存的命中率,使用状态等等。

2.缺点 
1)ARGB_8888 
2)Picasso的方式则因为需要在显示之前重新调整大小而导致一些延迟,Glide加载显示更快。

3.性能分析

4.风险(包大小等) 
包大小:1.2mb 
能否解决listview图片错位问题?

Picasa框架:点击打开链接

fresco

Facebook出的,不是一般的强大。

1.优点 
1)使用了Native缓存(5.0以下,不包括5.0) 
2)支持模糊渐进形式展示图片(类似webView) 
3)能够根据View的展示状态控制网络请求和图片解析的状态(在页面不可见时停止对图片的网络请求和解析操作,在页面可见时恢复操作) 
4)对多帧动画图片支持更好(未测试) 
5)对外提供清除缓存的方法

2.缺点 
1)ARGB_8888 
2)体积较大,集成后增大apk体积 
3)需要使用特定的view,需要xml支持

3.性能分析

4.风险(包大小等) 
包大小:4mb 
能否解决listview图片错位问题?

fresco框架:点击打开链接

volley imageloader

1.优点

2.缺点 
Google官方出品,可惜不能加载本地图片~

3.性能分析

4.风险(包大小等)

Universal Image Loader

1.优点:这个应该是我们用的最多的图片加载框架了,但是并不支持动态图片的加载,比较好用

2.缺点 
一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。

3.性能分析

4.风险(包大小等)

综述

  都能处理多种来源的图片,网络图片,本地图片,assets图片,都维护了内部的LruCache,Threadpool。 
  glide明显优于Picasso,但是glide和fresco之间的优劣对比还不知。 
http://www.mamicode.com/info-detail-929571.html这篇文章的测试显示在内存方面,fresco比glide有优势一些。 

  如果可以驾驭fresco的话,建议还是选择fresco。

发布了32 篇原创文章 · 获赞 115 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/bryant_liu24/article/details/52424350