volley-retrofit-okhttp之我们该如何选择网路框架

volley_okhttp_retrofit三种请求方式的基本用法 立即下载

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:Google发布的网络请求框架,专门为移动设备定制,小而美。
  • 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

【数字人实战】Windows系统下Fun-CosyVoice3-0.5B-2512本地部署的避坑指南与疑难解析 本文详细介绍了在Windows系统下本地部署Fun-CosyVoice3-0.5B-2512的避坑指南与疑难解析,包括Python环境准备、源码获取、依赖安装、模型下载与WebUI启动等关键步骤。特别针对Windows环境下的常见问题提供了实用解决方案,帮助开发者高效完成部署并充分利用其语音转换与多语言支持功能。 阅读详情

相关推荐

Keil MDK v6迁移指南:从AC5到AC6的编译器升级与工程适配

编译器是嵌入式开发的底层基石,决定了代码的执行效率与工程的可维护性。随着ARM工具链向LLVM/Clang架构演进,Arm Compiler 6(AC6)正逐步取代经典的AC5,成为Keil MDK的核心编译引擎。AC6在C11标准支持、代码优化、诊断信息及LTO链接优化上全面超越AC5,但迁移过程中往往伴随内联汇编重写、类型检查严格化、库兼容性等问题。理解编译器差异、掌握CMSIS-Toolbox的工程描述机制,能帮助嵌入式工程师在Cortex-M系列项目中平滑过渡。本文结合Cortex-M4量产工程实战

weixin_29189363的博客 242

Android网络请求框架-Volley、OkHttp、Retrofit

1. Volley              Volley是2013年Google官方发布的一款Android平台的网络请求框架,Volley是“群发”、“迸发”,因此它非常适合 一些数据量不大,但需要频繁通信的网络操作。 优点: Volley框架封装了HttpClient,可以提供开发效率; 而且性能稳定性很高; 而且扩展性较强,支持HttpClient、HttpUrlConnnect...

牛八少爷的专栏 658

CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?

接着,它创建了一个 Player 对象,并使用 protobuf.js 提供的 API 对其进行序列化和反序列化操作。其中,name 和 level 是普通的字段,items 是一个 repeated 字段,表示它可以包含多个值。在 Cocos Creator 中使用 protobuf.js,我们需要先加载 .proto 文件,然后使用 protobuf.js 提供的 API 进行序列化和反序列化操作。JSON和XML是文本格式,更易于阅读和调试,而且在对人类友好的接口和数据交换上更为常见和广泛支持。

w风雨无阻w的专栏 2628

Android中Okhttp,Volley,Retrofit网络框架优缺点及对比

Okhttp: Square 公司开源的 OkHttp 是一个专注于连接效率的 HTTP 客户端。OkHttp 提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。 优点: 支持http请求,https请求、支持同步异步。 支持文件下载、加载图片、基于Http的文件上传。 使用的是HttpURLConnection,不要担心android版本的...

Virgil_K2017的博客 5253

STM32F407+LAN8720A+LwIP实战:FreeModbus TCP从机功能开发指南

本文详细介绍了基于STM32F407和LAN8720A硬件平台,结合LwIP协议栈实现FreeModbus TCP从机功能的开发指南。内容涵盖硬件连接、LwIP移植、FreeModbus TCP从机实现、任务调度及调试技巧,为工业控制领域的以太网通信开发提供实用参考。

weixin_29190651的博客 547

别再只仿真原理图了!用ADS做微带功分器,版图仿真这一步才是关键

本文深入探讨了使用ADS进行微带功分器设计时版图仿真的重要性,指出原理图仿真与版图仿真的本质差异及其对性能的影响。通过详细分析版图效应、关键设置和优化策略,帮助工程师避免常见陷阱,提升设计效率和准确性。文章特别强调了版图仿真在确保微波电路性能中的关键作用。

weixin_42561476的博客 415

安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

网络请求框架总结 1.xutils      此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一以后这个库不维护了,或者中间某个模块出问题了,这个影响非常大,所以在项目开发时,一般会更喜欢选择专注某一领域的框架。 2.OkHttp     Android 开发中是可以直接使用现成

所谓简爱的博客 1万+

ST电机库实战:从状态机到稳健启动流程的深度解析

本文深度解析了ST电机库中状态机的核心作用与稳健启动流程。状态机作为电机控制的“交通指挥官”,通过IDLE、CHARGE_BOOT_CAP、ALIGNMENT等一系列状态的严格跳转,确保了永磁同步电机(PMSM)和直流无刷电机(BLDC)的安全启动与可靠运行,是避免硬件损坏和实现平稳控制的关键。

weixin_29161785的博客 227

Volley与Retrofit(OKHttp)使用与区别

Volley使用:    平常我们使用Volley的标准步骤是:         (1)创建一个RequestQueue队列;              RequestQueue mQueue = Volley.newRequestQueue(context);           (2)创建一个Request对象(当然实际中可能就是Request的子类了,比如:S

ysh06201418的专栏 3905

基于Python的链家与贝壳租房数据爬取及城市性价比分析

本文通过Python爬虫技术,实现对链家和贝壳平台全国主要城市租房数据的采集与分析。研究使用requestsSelenium和Playwright等现代化爬虫工具,结合代理IP和验证码识别技术应对反爬机制。采集的数据经过清洗后,从多维度分析不同城市租房市场的价格分布、面积特征和性价比差异,并使用可视化技术展示分析结果。本研究为租房者提供决策参考,也为租房市场研究提供数据支撑。关键词:Python爬虫;租房数据;数据分析;链家;贝壳。

2201_76125261的博客 530

【运动规划算法项目实战】全覆盖分区算法

全覆盖规划在机器人学领域具有重要意义,其应用场景涵盖了自动农场、扫地机器人、扫描监视无人机等多个领域。该问题的核心目标是使机器人能够从指定起点出发,规划一条避开障碍物、同时路径尽可能短的轨迹,从而实现对特定区域的全面覆盖。在实际应用中,全覆盖规划的成功实现对于提高机器人在各类环境中的工作效率至关重要。这一问题的解决涉及到高效的路径规划和规划区域分解技术。其中,梯形单元分解算法是一种常用分区的技术,过将地图上需要规划的区域进行分区,采用梯形分解的方式,可以更好地应对复杂环境。全覆盖算法规划流程。

xiewf的博客 1万+

网络请求OkHttp,Volley,Retrofit 使用的比较

OkHttp的使用OkHttp现在最新的的版本在github上是3.5.0,它是来自Square公司。有以下几个优点: 支持 SPDY1 ,允许连接同一主机的所有请求分享一个socket。 如果SPDY不可用,会使用连接池减少请求延迟。 使用GZIP压缩下载内容,且压缩操作对用户是透明的。 利用响应缓存来避免重复的网络请求。 接下来看下简单的使用说明: 在gradle中配置: compile 'co

小学长的博客 3535

Dify 第 3 篇 Dify 入门示例 - 聊天助手

本文介绍了如何使用Dify平台快速搭建一个聊天助手。首先通过创建空白应用并选择"聊天助手"模板完成基础设置,然后安装配置通义千问等大语言模型(LLM)并设置API密钥。进阶部分演示了如何创建支持编程语言选择的代码解释器,包括添加提示词约束、插入变量、设置开场白等功能。最后展示了运行效果:用户可选择编程语言后输入代码,系统会给出相应解释。文章还提到应用支持发布共享,并附有Dify官方文档参考链接。

甘蓝的专栏 865

[转]volley-retrofit-okhttp之我们该如何选择网路框架

[转]volley-retrofit-okhttp之我们该如何选择网路框架 说起Volley、Retrofit、OkHttp相信基本没有人不知道。当然这里把OkHttp放进来可能有些不恰当。因为OkHttp的官方介绍是An HTTP+HTTP/2 client forAndroidandJavaapplications。也就是说Ok...

weixin_30872671的博客 75

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android常用的网路框架

Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多得多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式。可是在 Android 5.0 的时候 Google 就...

aihao_diy的博客 3136

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android面试分析一:关于OKhttp详解(附带视频教程)

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。考虑拓展,有了基本框架之后,我会按照我目前在项目中遇到的一些需求或者网路方面的问题,看看能不能基于我这个框架进行优化,比如服务器它设置的缓存策略,公司19年的面试题。先参考现有的框架,找一个比较合适的框架作为启动点,比如说,基于上面讲到的。

2401_84006689的博客 867

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Android之---项目开发中网络框架的选择

项目开发中网络框架的选择Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。

AM小可乐的博客 4402

Android常用的网络框架

Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多得多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式。可是在 Android 5.0 的时候 Google 就...

dianziagen的博客 9097

Android 系统(75)---Android常用的网路框架

Android常用的网路框架Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多得多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式。可是在 Android 5....

zhangbijun1230的专栏 368

android java 开发网路请求库那个好用请列一个排行榜

首选组合(Android Java 项目的黄金搭档,兼顾简洁性和高性能)简单场景:单独使用 OkHttp(无需复杂 API 封装时)老项目维护:Volley / AsyncHttpClient(不推荐新项目选型)绝对避免:原生 HttpURLConnection / HttpClient(效率低、坑多)

。 769

android几种网络框架的比较

Android常用的网路框架:  大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 Android 中进行网络连接一般使用 Scoket 和HTTP,HTTP 请求方式比 Scoket 多得多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式。可是在 Android 5.0 的时候...

Hunter2916的博客 1060

Volley源码看这一篇就够了

忆往昔,峥嵘岁月愁。对于 Android 网络框架是一代新人换旧人,但是我还没深入分析过 Volley 的源码,今天我们走进 Volley 不为人知的世界,也许会令你耳目一新。

杨哲丶的专栏 5612

藏书阁app-网络库选型篇

藏书阁app-网络库选型篇基本要求 支持 HTTP 协议 异步请求 可选的网络库经过整理,可得出以下四个热门网络库都是支持上述两点要求的,接下来一步一步分析各自的特点。android-async-http 通过该库的 Github 的主页我们可以得出以下特点: 使用 ThreadPool 调度请求资源,避免了每次请求都要新建线程。 支持 Gzip 解压缩 早期版本基于 Apa

test 3340

Android学习之网络请求(访问网路数据)一

HTTP请求和响应一次请求就是向目标服务器发送一串文本 HTTP请求包结构: 例子:POST /meme.php/home/user/login HTTP/1.1 Host: 114.215.86.90 Cache-Control: no-cache Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed Con

小薇子的博客 1129
上一篇: butterknife源码详解
下一篇: ConstraintLayout简介
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值