安卓开发经常使用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

网络请求框架总结
1.xutils  
   此框架庞大而周全,这个框架能够网络请求,同时能够图片加载,又能够数据存储,又能够 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一之后这个库不维护了,或者中间某个模块出问题了,这个影响很是大,因此在项目开发时,通常会更喜欢选择专一某一领域的框架。

2.OkHttp
    Android 开发中是能够直接使用现成的api进行网络请求的,就是使用HttpClient、HttpUrlConnection 进行操做,目前HttpClient 已经被废弃,而 android-async-http 是基于HttpClient的,可能也是由于这个缘由做者放弃维护。 而OkHttp是Square公司开源的针对Java和Android程序,封装的一个高性能http请求库,它的职责跟HttpUrlConnection 是同样的,支持 spdy、http 2.0、websocket ,支持同步、异步,并且 OkHttp 又封装了线程池,封装了数据转换,封装了参数使用、错误处理等,api使用起来更加方便。能够把它理解成是一个封装以后的相似HttpUrlConnection的东西,可是在使用的时候仍然须要本身再作一层封装,这样才能像使用一个框架同样更加顺手。

3.Volley
   Volley是Google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection, 甚至支持OkHttp,并且Volley里面也封装了ImageLoader,因此若是你愿意你甚至不须要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可使用,稍复杂点的需求仍是须要用到专门的图片加载框架。Volley也有缺陷,好比不支持post大数据,因此不适合上传文件。不过Volley设计的初衷自己也就是为频繁的、数据量小的网络请求而生。

4.Retrofit
   Retrofit是Square公司出品的默认基于OkHttp封装的一套RESTful网络请求框架,RESTful是目前流行的一套api设计的风格, 并非标准。Retrofit的封装能够说是很强大,里面涉及到一堆的设计模式,能够经过注解直接配置请求,可使用不一样的http客户端,虽然默认是用http ,可使用不一样Json Converter 来序列化数据,同时提供对RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 能够说是目前比较潮的一套框架,可是须要有比较高的门槛。 

5.Volley VS OkHttp
  Volley的优点在于封装的更好,而使用OkHttp你须要有足够的能力再进行一次封装。而OkHttp的优点在于性能更高,由于 OkHttp基于NIO和Okio ,因此性能上要比 Volley更快。IO 和 NIO这两个都是Java中的概念,若是我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操做这种是最简单的也叫阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我,而后再处理回调。而第二种就是 NIO 的方式,非阻塞式, 因此NIO固然要比IO的性能要好了,而 Okio是 Square 公司基于IO和NIO基础上作的一个更简单、高效处理数据流的一个库。理论上若是Volley和OkHttp对比的话,更倾向于使用 Volley,由于Volley内部一样支持使用OkHttp,这点OkHttp的性能优点就没了,  并且 Volley 自己封装的也更易用,扩展性更好些。 

6.OkHttp VS Retrofit
   毫无疑问,Retrofit 默认是基于 OkHttp 而作的封装,这点来讲没有可比性,确定首选 Retrofit。 

7.Volley VS Retrofit 
  这两个库都作了不错的封装,但Retrofit解耦的更完全,尤为Retrofit2.0出来,Jake对以前1.0设计不合理的地方作了大量重构, 职责更细分,并且Retrofit默认使用OkHttp,性能上也要比Volley占优点,再有若是你的项目若是采用了RxJava ,那更该使用  Retrofit 。因此这两个库相比,Retrofit更有优点,在能掌握两个框架的前提下该优先使用 Retrofit。可是Retrofit门槛要比Volley稍高些, 要理解他的原理,各类用法,想完全搞明白仍是须要花些功夫的,若是你对它只知其一;不知其二,那仍是建议在商业项目使用Volley吧。 

8.总结
  综上,若是以上三种网络库你都能熟练掌握,那么优先推荐使用Retrofit,前提是最好大家的后台api也能遵循RESTful的风格, 其次若是不想使用或者没能力掌握Retrofit ,那么推荐使用Volley ,毕竟Volley不须要作过多的封装,若是须要上传大数据, 那么不建议使用 Volley,该采用 OkHttp 。android

相关文章
相关标签/搜索