网络请求框架分析

北漂中浮沉,菜鸟变老鸟,青年成大叔。
本文主要对Retrofit , OkHttp , Volley , xutils3 的优缺点进行对比分析。

Retrofit

retrofit是当下最好用的网络技术框架(真不想加之一)
它是Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架。
它通过代理、注解等优化封装,使得网络请求变得如此稳定简单。
优点
简洁好用、简洁好用、简洁好用重要的事情说三遍。通过注解配置网络请求参数、代理模式简化使用。
支持多种数据的解析&序列化格式(Gson、Json、Xml、Protobuf等等)。
可拓展性好。功能模块高度封装、解耦彻底。
完美支持http、https。
提供RxJava支持。
大文件传输性能稳定
网络请求回来是主线程
本质是okhttp的封装,所以具备okhttp的优点。
缺点
需要详细阅读官网,注意一些细节,掌握成本较高。
比如:retrofit2.0后:BaseUrl要以/结尾,不要以/开头,多种注解的用法等。

OkHttp

OkHttp 是 Square 公司开源的针对 Java 和 Android 程序,封装的一个高性能网络请求库。
支持 spdy、http 2.0、websocket ,支持同步、异步,并封装了线程池。
封装了数据转换,封装了参数使用、错误处理等,api 使用起来更加方便。
优点
支持SPDY, 允许连接到同一个主机地址的所有请求,提高请求效率
共享Socket,减少对服务器的请求次数
使用连接池技术减少请求的延迟(如果SPDY是可用的话) 。
自动处理GZIP压缩减少传输的数据量。
缓存响应避免重复的网络请求。
拦截器。
性能稳定,拓展性强等等。
缺点
网络请求回来是子线程,需要自己手动切换到主线程。
参数调用比较复杂。

Volley

Volley框架在2013年Google I/O大会上被提出。
它使得Android应用网络操作更方便更快捷;
抽象了底层HttpClient等实现的细节,让开发者更专注与产生RESTful Request。
另外,Volley在不同的线程上异步执行所有请求而避免了阻塞主线程。
Volley在Android 2.3及以上版本,使用的是HttpURLConnection,
而在Android 2.2及以下版本,使用的是HttpClient。
优点
支持使用ImageRequest来请求图片,也就是说支持ImageLoader和NetworkImageView。
拓展性强
缺点
不支持post大数据,所以在大数据量传输时经常挂掉。
封装的图片加载不是很强大,复杂些的图片需求无法完全满足。
Google在6.0已经废弃了httpClient,而Volley也停止了更新。

xutils3

xUtils3是基于Afinal开发的目前功能比较完善的一个Android开源框架,功能十分强大。
相比于旧版本的xUtils:
    HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略;
    支持标准的Cookie策略, 区分domain, path;
    事件注解去除不常用的功能, 提高性能;
    数据库api简化提高性能, 达到和greenDao一致的性能;
优点
包含了很多实用的android工具:ViewUtils(代替findviewbyid、控件事件绑定)
,HttpUtils(网络请求),BitmapUtils(图片加载),DbUtils(操作数据库)LogUtils(日志打印)等。
支持超大文件(超过2G)上传。
有更全面的http请求协议支持。
拥有灵活的Orm。
支持事件注解且不受代码混淆影响。
缺点
正因为包含多种工具,所以显得臃肿。
图片绑定虽然支持了gif,但是受系统兼容性影响, 部分gif文件只能静态显示。
Xutils对android6.0以上兼容性不好,建议使用Xutils3
拓展性差
使用中bug较多

总结

  1. 不建议使用Volley,其不支持大文件传输的bug是致命缺点,项目当前不用大数据传输,不代表之后不用,到那时候改网络框架的话想死的心都有了。

  2. 推荐使用Retrofit,其解耦性更好,拓展性更强,稳定性高,使用简洁,因其默认使用okhttp所以性能较Volley和Xutils更好。

  3. 如果对Retrofit不是很了解,建议使用封装后的okHttp。github上有很多比较好的封装okhttp的网络框架,比如:hongyang大神的OKHttpUtils、okhttpFinal等

  4. xUtils3的网络请求没有okhttpt和Retrofit性能好,图片加载没有fresco强大、没有glide稳定、数据库操作没有greendao性能高,但是它确实最完善的框架,一招在手,能干所有,所以,如果是特别小的项目,可以容忍xUtils的小缺点的话,xUtils3也是可以考虑采用的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值