欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Xutils, OKhttp, Volley, Retrofit对比

程序员文章站 2022-04-13 22:17:44
Xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的严重,一旦这个框架出现问题,那么对项目来说影响非常大的。、 OKhttp:Android开发中是可以 ......

xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的严重,一旦这个框架出现问题,那么对项目来说影响非常大的。、

okhttp:android开发中是可以直接使用现成的api进行网络请求的。就是使用httpclient,httpurlconnection进行操作。okhttp针对java和android程序,封装的一个高性能的http请求库,支持同步,异步,而且okhttp又封装了线程池,封装了数据转换,封装了参数的使用,错误处理等。api使用起来更加的方便。但是我们在项目中使用的时候仍然需要自己在做一层封装,这样才能使用的更加的顺手。

volley:volley是google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持httpclient、httpurlconnection, 甚至支持okhttp,而且volley里面也封装了imageloader,所以如果你愿意你甚至不需要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,稍复杂点的需求还是需要用到专门的图片加载框架。volley也有缺陷,比如不支持post大数据,所以不适合上传文件。不过volley设计的初衷本身也就是为频繁的、数据量小的网络请求而生。

retrofit:retrofit是square公司出品的默认基于okhttp封装的一套restful网络请求框架,restful是目前流行的一套api设计的风格, 并不是标准。retrofit的封装可以说是很强大,里面涉及到一堆的设计模式,可以通过注解直接配置请求,可以使用不同的http客户端,虽然默认是用http ,可以使用不同json converter 来序列化数据,同时提供对rxjava的支持,使用retrofit + okhttp + rxjava + dagger2 可以说是目前比较潮的一套框架,但是需要有比较高的门槛。

 

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 本身封装的也更易用,扩展性更好些。

okhttp vs retrofit

毫无疑问,retrofit 默认是基于 okhttp 而做的封装,这点来说没有可比性,肯定首选 retrofit。

volley vs retrofit

这两个库都做了不错的封装,但retrofit解耦的更彻底,尤其retrofit2.0出来,jake对之前1.0设计不合理的地方做了大量重构, 职责更细分,而且retrofit默认使用okhttp,性能上也要比volley占优势,再有如果你的项目如果采用了rxjava ,那更该使用 retrofit 。所以这两个库相比,retrofit更有优势,在能掌握两个框架的前提下该优先使用 retrofit。但是retrofit门槛要比volley稍高些,要理解他的原理,各种用法,想彻底搞明白还是需要花些功夫的,如果你对它一知半解,那还是建议在商业项目使用volley吧。