Android 网络通信架包优缺点使用情况的调研

                         Android 网络通信架包优缺点使用情况的调研

1.Volley简介

Volley是在Google I/O 2013上发布的网络通信框架,是Android平台上的网络通信库,Volley的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕

 

该框架封装的扩展性很强,支持HttpClientHttpUrlConnection, 甚至支持OkHttp,而且Volley里面也封装了ImageLoader,所以如果你愿意你甚至不需要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,稍复杂点的需求还是需要用到专门的图片加载框架。

2.Xutils简介

XUtilsAndroid快速开发框架,支持大文件上传上传大文件也不会oom,有更全面的http请求协议支持,最低兼容android 2.2 (api level 8)但是底层用的是HttpClient,这个东西在android6.0被剔除了,所以你用的编译版本是API 23的话会有问题,应该还要自己去下这个jar包 XUtils目前有四大模块:DbUtilsViewUtilsHttpUtilsBitmapUtils

 

使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一以后这个库不维护了,或者中间某个模块出问题了,这个影响非常大,所以在项目开发时,一般会更喜欢选择专注某一领域的框架。

3.OkHttp简介

okHttp是目前谷歌推荐使用的,不过个人觉得使用起来也不是很方便,但是支持文件下载,加载图片,支持请求回调,直接返回对象、对象集合,目前使用也是比较多的网络通信框架。

 

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

 

4.Retrofit简介

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

 

5.Volley VS OkHttp

Volley的优势在于封装的更好,而使用OkHttp你需要有足够的能力再进行一次封装。而OkHttp的有事在于性能更高,因为OkHttp基于NIOOkio,所以性能上要比Volley更快。IONIO这两个都是java中的概念,如果我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操作这种是最简单的也是阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我,然后在处理回调。而第二种就是NIO的方式,非阻塞式,所以NIO当然要比IO的性能要好了,而OkioSquare公司基于IONIO基础上做的一个更简单、高效处理数据流的一个库。理论上如果VolleyOKHttp对比的话,更倾向于使用volley,因为Volley内部同样支持使用OKHttp,这点OKHttp的性能优势就没了,而且Volley本身封装的也更易用,扩展性更好些。

 

6.Retrofit VS OkHttp

毫无疑问,Retrofit默认是基于OKHttp而做的封装,这点老说没有可比性,肯定首选Retrofit

7.Retrofit VS Volley

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

 

8.总结

综上,如果以上三种网络库你都能熟练掌握,那么优先推荐使用Retrofit,前提是最好发开商的后台API也能遵循Retrofit的风格,其次如果不想使用或者没有能力掌握Retrofit,那么推荐使用Volley,毕竟Volley不需要做过多的封装,如果需要上传大数据,那么不建议使用Volley,该采用OKHttp

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TobiasLeeBeiJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值