xutils,okhttp,volley,retrofit对比

ganchuanpu ganchuanpu     2022-12-23     281

关键词:

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吧。





volley+okhttp的整合

   最近一直在学习Volley和OkHttp,各有优点,在整合方面网络相关资料太少了,自己写了一个Demo,后续如果有时间我会详细说一下两个框架。费话不多说,直接上Demo地址。https://github.com/xiaojinlai/Volley-OkHttp 查看详情

Okhttp 在与 volley 一起使用时显示泄漏警告

】Okhttp在与volley一起使用时显示泄漏警告【英文标题】:Okhttpshowingleakedwarningwhileusingwithvolley【发布时间】:2018-04-2919:28:29【问题描述】:在开发我的android应用程序时,我在Logcat中收到此警告WARNING:Aconnectiontohttps://...wasleaked.Didyouf... 查看详情

如何为 Android M 及更高版本的 Volley 编写 OkHttp3 堆栈?

】如何为AndroidM及更高版本的Volley编写OkHttp3堆栈?【英文标题】:HowtowriteanOkHttp3stackforVolleyforAndroidMandabove?【发布时间】:2018-01-1516:05:42【问题描述】:我想为实现com.android.volley.toolbox.HttpStack的Volley创建一个OkHttp3Stack。目前存在... 查看详情

Android 网络库的比较:OkHTTP、Retrofit 和 Volley [关闭]

】Android网络库的比较:OkHTTP、Retrofit和Volley[关闭]【英文标题】:ComparisonofAndroidnetworkinglibraries:OkHTTP,Retrofit,andVolley[closed]【发布时间】:2017-06-2515:51:15【问题描述】:一位学习Android的iOS开发人员提出的两部分问题,他正在开发一... 查看详情

Volley, OKhttp 刷新页面直到得到结果 GET METHOD Android

】Volley,OKhttp刷新页面直到得到结果GETMETHODAndroid【英文标题】:Volley,OKhttpRefreshPageTillGetResultGETMETHODAndroid【发布时间】:2021-09-1318:59:21【问题描述】:我正在使用应用程序中的隐藏api(因此,我无法从服务器端更改任何内容)并... 查看详情

volley源码看这一篇就够了

...c;在比较网络框架的时候,有人会问到:“Volley和Okhttp哪个网络框架好?”或者“HttpURLConnection和Volley哪个网络框架好?”,虽说都是可以用来请求数据的,但是一般都不会这么讲,因为HttpURLConnection和O... 查看详情

在 Volley 中实现 POST 请求时出现错误代码 400,但在使用 OkHttp 时却没有

】在Volley中实现POST请求时出现错误代码400,但在使用OkHttp时却没有【英文标题】:ErrorCode400whenimplementingPOSTRequestinVolley,butnotwhenimplementingwithOkHttp【发布时间】:2018-03-2613:09:12【问题描述】:下面是我在使用OkHttp时用来发送POST请... 查看详情

okhttp3stackvolley

packagecom.yong.volleyok.okhttp;   importcom.android.volley.AuthFailureError; importcom.android.volley.Request; importcom.android.volley.toolbox.HttpStack;   im 查看详情

okhttp封装网络层扩展

...p开发首先重要就是网络通信,而如今主流的async、volley、okhttp等,阿么这么网络库怎样能做到更好封装、更好的切换,从而不影响业务层的代码,而本文就是基于这个思路,从而封装了okhttp,并能支持封装切换到async、或者volley... 查看详情

android中网络框架volley的用法

Volley是在GoogleI/O2013上发布的一框网络通信http模块,新版本的Android已经废除了HttpClient的使用,目前主流的android网络通信库有:Async-Http、NoHttp、xUtil等。本文就自己学习了Volley一些相关知识,基于Volley的部分源码... 查看详情

更改手机系统的user-agent&okhttp

okhttp和volley1.之前用的是volley,其中一部分功能,比如User-Agent,是系统去处理的,改成okhttp库后,这部分功能需要浏览器自己处理2.具体区别可以参考:https://www.cnblogs.com/fanzhiguo/p/6038021.htmlhttps://www.cnblogs.com/android-blogs/p/5867624.html... 查看详情

更改 Volley 框架的重定向策略

...而不更改任何Volley代码。一个有效的解决方案是始终使用OkHttp作为传输层(如Issuesa 查看详情

okhttp的使用

一、Android主流网络请求开源库的对比(Android-Async-Http,Volley,OkHttp,Retrofit)   来自大神博客:http://blog.csdn.net/carson_ho/article/details/52171976     二、站在巨人的肩膀上  &nbs 查看详情

再回首--volley源码解析(代码片段)

前言前面解析了Retrofit和OkHttp这两个框架的源码,提到网络框架,肯定少不了Volley这位老前辈,想曾经的项目用的可都是Volley,每个框架都有其适用的场景,只是随着时间的更迭,逐渐被替代。那这次顺便... 查看详情

okhttp使用简单介绍

如今android网络方面的第三方库非常多,volley。Retrofit。OKHttp等,各有各自的特点,这边博客就来简介下怎样使用OKHttp。梗概OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟。... 查看详情

volley源码解析

...么Volley的时候就瞬间爱不释手,虽说现在项目中使用OkHttp多些(Volley更新慢),但是作为google自家推出的网络框架,Volley还是有很多值得学习的地方。这篇博客是我对Volley源码分析后的一个总结。Volley的使用Vo... 查看详情

com.android.volley.NoConnectionError 暂停应用程序后

...我正在使用GoogleVolley和Gson编写我的应用程序,以与使用OkHttp作为HTTP-Stack的REST服务通信。这在大多数情况下都很好用,但是当我暂停我的应用 查看详情

[http那些事]json数据(代码片段)

...越多。比如HTTP请求框架,有自家的Volley,Square的okhttp,async-http-lib,还有聚合版的xUtils以及AFinal。我想你肯定用过其中一个。当然Stay今天不是来科普的,而是来跟大家一起思考一个问题的。我们暂且不提他们在内部做了... 查看详情