volley-retrofit-okhttp之我们该如何选择网路框架
2016-08-12 17:58
489 查看
volley-retrofit-okhttp之我们该如何选择网路框架
说起Volley、
Retrofit、
OkHttp相信基本没有人不知道。当然这里把
OkHttp放进来可能有些不恰当。
因为
OkHttp的官方介绍是
An HTTP+HTTP/2 client for Android and Java applications。
也就是说
OkHttp是基于
http协议封装的一套请求客户端。它是真正的网络请求部分,
与
HttpClient、
HttpUrlConnection是一样的,
但是显然它的效率非常高(说到这里顺便提一嘴,从
Android 4.4开始
HttpUrlConnection内部默认使用的也是
OkHttp,
具体请参考之前的文章HttpUrlConnection详解)。
而
Volley、
Retrofit是控制请求的队列、切换、解析、缓存等逻辑。所以
Volley和
Retrofit都可以结合
OkHttp来使用。
在
Android开发中有很多网络请求框架,但是比较过来比较过去,最后最倾向的就是这两个:
Volley:
Retrofit:良心企业
Square由大神
JakeWharton主导的开源项目,是基于
OkHttp封装的一套
Resetful网络请求框架。
Type-safe HTTP client for Android and Java by Square, Inc.
有关
Volley的介绍请看之前发布的文章Volley源码分析
这里就不分别介绍他俩了,直接说各自的优缺点:
Retrofit使用起来更简单。而
Volley配置起来会稍微麻烦,因为
Volley可以使用
HttpClient、
HttpUrlConnection、
OkHttp我们需要根据自己的需求去配置。而
Retrofit只能结合
OkHttp使用。
Retrofit依赖于
OkHttp,从而会导致它的包大小会比
Volley的大。
Volley有很好的内存缓存管理,它在解析之前会将整个相应部分都加载到内存中,所以它对于小的网络请求非常合适,但是不支持
post大数据,所以不适合上传文件。而
Retrofit使用的是硬盘缓存,所以相比起从缓存这块来讲
Retrofit可能会更慢一些。
Retrofit依赖于
OkHttp,而
OkHttp自身会避免同时两次请求同一个请求。所以
Retrofit同样会和
Volley一样去避免重复的请求,只不过它是在网络层来处理的。
Volley在网络请求部分默认依赖于
Apache HttpClient。而
Apache HttpClient从
API 23开始已经在
Android中被移除并废弃了。这就是为什么很多开发者会认为
Volley已经过时了,因为
Volley并没有迁移到新的未废弃的代码。
默认情况下
Volley会在
DefaultRetryPolicy中会将读取和连接的超时时间设置为
2.5s,并且对每次请求失败或者超时都有一次自动重试。 所以对于一些服务器响应可能会超过
2s的请求,开发者需要格外的小心下。
Retrofit的默认超时时间是
10s,而且它对失败或者超时的操作不会自动重试。
很多开发者都会说
Retrofit会比
Volley更快。因为有人专门去测试过,其实这里是不严谨的。因为
Volley可以结合使用
HttpUrlConnection、
HttpClient、
OkHttp等来使用,而
Retrofit是用
OkHttp一起,所以如果你让
Volley结合
OkHttp之后再来测试你就会发现总体来说其实他们不相上下。
Volley实现了很完善的
Activity声明周期管理。
虽然
Volley之前也有一些问题,但是它们也都被各个大神修复。
所以综合起来说使用
Volley+OKHttp的组合是非常不错的,既可以保证速度又可以满足对缓存、重试等的处理。但是如果你是
RxJava的使用者那你可能会更偏向于使用
Retrofit,因为
Retrofit可以无缝结合
RxJava使用。目前主流的一套框架就是
Retrofit + OkHttp + RxJava + Dagger2,但是对使用者的要求也相对要高些。
更多文章请移步Github AndroidNote
相关文章推荐
- [转]volley-retrofit-okhttp之我们该如何选择网路框架
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比 标签: androidVolleyOkhttpRetrofit网络请求框架
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- android网络框架选择volley, retrofit, android-async-http
- Android 网络框架(Android-async-http,OKHttp,retrofit,volley,xUtils,Afinal)
- Android网络框架综述(一)OkHttp、NoHttp、Volley
- android 网络框架学习(okhttp,retrofit,rxjava)
- HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比,如何选择?
- 网络请求框架(OKHttp+Retrofit+RxJava)
- Android 当前比较新的框架组合,Retrofit,OKHttp,RXJava的一些简单使用
- 面试题记录第十节——(okhttp、retrofit网络框架)
- OkHttp, Retrofit, Volley,android-async-http怎么选择
- Android网络框架选择(Volley、OkHttp、Retrofit)
- Android 开源网络框架(Android-Async-Http、Volley、OkHttp3、Retrofit2.0)对比
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 打造属于自己的网络请求框架(OKHttp+Retrofit+RxJava)
- Android网络框架选择(Volley、OkHttp、Retrofit)
- MVP,retrofit,rxjava,okhttp框架
- MVP+RxJava+Retrofit_Okhttp框架优秀开源项目推荐