网络框架Volley原理分析

Android网络框架-Volley(一) 工作原理分析 使用Volley可以让我们轻松访问网络,不用每次都要写大量重复的代码,而且它是异步的,不用我们再去写异步任务,这样代码非常简洁。还有很重要的一点,他还可以异步加载图片并且有缓存机制,防止OOM发生,Volley把该干的全都干了,我们只需要专注于我们自己的业务逻辑就可以了。Volley适合于小数据量,多次数的网络访问情况,比如常见的一个listview,每行都是从网络上获取的一个图片和几行文本,使用 阅读详情

简介:Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。

Volley 的特点:特别适合数据量小,通信频繁的网络操作。

首先从与框架同名的Volley.java开始分析,文件位于toolbox。该类主要用于建立一个新的请求队列RequestQueue,方法有两个分别是:

newRequestQueue(Context context, HttpStack stack)
newRequestQueue(Context context)

1.传入Context时,调用newRequestQueue(context, null),然后根据DEFAULT_CACHE_DIR定义缓存文件名。

2.然后根据系统版本号,sdk大于9时使用HurlStack( HttpUrlConnection ),否则使用HttpClientStack( HttpClient ),然后将Stack传入Network,Network可以调用Stack处理请求,然后将结果转换成NetworkResponse

3.然后将定义的Network和缓存目录传入RequestQueue(Cache cache, Network network)去新建请求队列。

4.最后开启请求队列,执行start()方法,该方法会产生根据线程池大小产生对应数量的网络调度线程NetworkDispatcher和一个缓存调度线程CacheDispatcher(此处是用于异步处理请求的)

5.每次调用只需要将自定义的Request通过add()方法传入,请求将会被添加到mCurrentRequests,该Set用于存储当前正在处理的请求,接着根据请求的shouldCache()方法判断是否需要进行缓存,如果不需要则直接放入网络队列,否则根据Url将请求放入缓存队列。

6.缓存调度器CacheDispatcher会从缓存队列中取出请求,然后根据CacheKey获取缓存,如果获取失败则放入网络队列中去处理,否则进行验证有效期等,最后将处理结果交由ResponseDelivery,他是返回结果分发接口,用于分发返回的结果

7.网络调度器NetworkDispatcher会从网络队列中取出请求,然后处理完成交由ResponseDelivery分发处理结果。

最后附上Volley的请求流程图
Volley请求流程图

volley框架封装(实现的非常好) 实现的volley 框架的各种功能,包括 异步图片 各种request请求,很有参考价值 立即下载

相关推荐

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2933

Volley的原理解析

前言 在 Android 开发编程的过程当中,无可避免地需要涉及到网络编程,这就需要我们开发者比较熟练地掌握网络编程。哈哈,今天就先从解析 Volley 开始吧! 1.0 Volley是什么 Volley 是在 2013 年的 Googel I/O 大会上面推出的一个 HTTP 库,它可以帮助 Android 应用更加方便地执行网络请求。它既可以访问网络取得数据,同时还可以访问网络取得图片。 ...

weixin_34309543的博客 258

dToF直方图之美

上面视频里如果你能看懂,那么就能理解对于dToF单点的测距问题,对于大部分的描述在AMS和ST里的手册都非常的详细,有疑问的可以后台来找我探讨,今天我们单纯从上层讨论成像的问题。作为dToF算法工程师,应该是对直方图敏感的,直方图的每个Count峰都会表征出问题,因为dToF的输出只有直方图,观察直方图能够逆推出dToF的很多东西,这也是大多数公司不愿意开放直方图和Raw data的缘故。以上是一个小面阵的分辨率,第一张是直方图,后面是基于直方图寻峰出来的成像ToF图,Peak图,以及噪声Noise图。

dream it possible 2995

简析Android网络请求Volley框架的工作原理

Volley网络模块以及错误重试机制分析 相关类如下: Network :封装网络请求接口 BaseNetWork : Network 接口实现类,用于封装网络请求,并且对请求结果封装,且实现网络请求错误重试机制。 HttpStack:执行网络请求接口 HurlStack:HttpStack 接口实现类,用于真正执行网络请求,并且得到请求结果。 HttpClientStack:Http

废墟的树的专栏 4179

RC模型车多电机驱动方案:从电调PWM原理到四电机安全连接实战

在电机控制领域,PWM(脉冲宽度调制)是实现精确调速的核心技术。其原理是通过调节固定周期内高电平的脉宽来编码控制指令,进而驱动电子调速器(电调)改变输出功率。这项技术对于需要多电机协同工作的场景,如RC模型车的差速转向或重型负载驱动,具有关键价值。它能实现动力的精细分配与同步,提升车辆的可控性与通过性。在实际应用中,为确保系统稳定,必须关注电流分配与信号同步问题。例如,通过为每个电机配备独立电调并采用信号并联(Y线)的方式,可以构建可靠的四电机驱动系统。这种方案能有效避免因单个电调过载或电机反电动势不一致导

weixin_30664615的博客 382

[A-21]ARMv8/v9-SMMU系统架构和功能概述

本文简述了SMMU的系统架构和核心功能

基层架构师的分享 1724

Volley框架原理

Volley有如下优点: 1. 自动调度网络请求 2. 多并发请求 (源于开了多个线程)3. 本地Cache自动缓存网络请求结果 4. 支持设置请求优先级 5. 支持取消单个请求或者取消所有请求 6. 易于定制请求(比如:自定义重试机制,自定义Request请求等) 7. 提供完善的Log打印跟踪工具 Google的一张Volley原理图来简单解释下Volley的工作原理。 Volley...

weixin_33882452的博客 653

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 380

Volley 实现原理解析(转)

转自:https://github.com/android-cn/android-open-project-analysis/tree/master/volley Volley 实现原理解析 本文为 Android 开源项目实现原理解析 中 Volley 部分 项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo 分析者:grumoon,校

JasonZhang 2万+

电商数据分析18——电商广告投放的数据分析与优化

在当今的电商行业中,广告投放是提高品牌知名度、吸引潜在客户和增加销售额的关键策略之一。随着市场竞争的加剧,仅仅依靠直观判断和传统方法已经无法满足广告投放的需求。数据分析在这里扮演了至关重要的角色,它可以帮助企业更准确地定位目标受众,评估广告效果,优化广告内容,从而提高广告效率和投资回报率(ROI)。

theskylife的博客 5703

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 289

Android性能优化:Volley使用及其原理解析

前言 在现在的Android开发之中,已经比较少人使用volley进行网络请求了,之所以现在还写这篇关于Volley的文章,是因为volley是一个优秀的框架,其设计严格遵循了面向对象的设计原则,学习volley的设计原则,对自己的项目开发有比较好的提示作用。 使用方式 1. 导入 在AndroidStudio里面,只需要在Projrct structure里面添加依赖,在搜索框里输入“voll...

weixin_45258969的博客 2138

配置 SAP Fiori 服务的 ICF 节点:从 SICF 激活到访问链路打通的完整实践

在SAP Fiori项目实施中,ICF节点配置是关键前置条件却常被忽视。ICF(Internet Communication Framework)作为HTTP请求入口,需要通过SICF事务码激活相关服务节点,否则即使应用开发完善,用户仍可能遇到页面无法访问等问题。典型问题表现为:磁贴可点击但页面空白、资源加载失败等。激活路径主要涉及三组节点:bsp分支下的管理入口、ui5_ui5分支下的应用资源,以及public/bc下的公共资源。项目实施中需特别注意同名服务在不同分支下的差异化作用,确保完整链路通畅。IC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 264

Android常用开源网络框架(一)—— Volley篇

Android常用开源网络框架 在Android开发中,网络请求是最重要的模块之一,Android中大部分网络请求使用的是HTTP连接,包括原生的HttpClient和HttpUrlConnection两种访问网络方式。需要注意的是,HttpClient方式在Android6.0以后,很多类已经不支持了。 目前主流的开源网络框架,主要有OkHttp,Volley,Retrofit三种,我本人在短暂...

步步小猫的博客 738

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

android-async-http ,volley ,okhttp分析

本文主要是对android-async-http ,volley ,okhttp这三个比较经典的联网框架的简单实用示范,以及简单的原理分析 地址: http://note.youdao.com/noteshare?id=43167ef266449e46bf715bc23ff7707c

duguhanghai的博客 376

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Volley框架简介

一、引言 虽然网上已经有很多大神、高手都写过了类似的帖子,但作为新人,必须要走模仿的道路,再考虑超越,因此学习大神的笔记,记录自己的理解,是一个菜鸟走向成功的必经之路啊。如签名所言,记录自己摸爬滚打的经历,享受不悔的青春。废话不多说,言归正传。 二、Volley是什么? Volley是 Google 推出的 Android 异步网络请求框架和图片加载框架。 三、Volley

苏白的专栏 593

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

volley 网络框架解析

volley网络框架是Google在2013年Google I/O大会上推出了一个新的网络通信框架。Volley既可以访问网络取得数据,也可以加载图片,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。 一.volley的基本用法 volley内部实现是基于队列的,开发者只需要创建请求放到请求队列中就

u014454120的博客(静思潜行) 532

源码解析Volley框架

Volley是Google在2013年I/O大会上发布的一个网络异步请求和图片加载框架。框架设计的非常好,可扩展性极强,很值得我们去学习。在这篇文章中重点去分析一下它的源码,Volley的使用在这里就不多加赘述了,如果有疑问可以参考实例文档。 Volley的代码虽然不是很多,但是总有一种看多了代码记不住类的感觉,在这里先贴出一张类图关系,大家如果在后面感觉有找不清类关系的时候可以看一下,图片来源

FSC的专栏 656

( 一 ) Volley 源码深入了解之 RequestQueue

一、为什么选 volley ? 说起 volley 还真是有点年头了,在 okHttp 未出之前 volley 其实也是个很火的框架,不过随着移动端日新月异的发展速度,使用的人越来越少却是不争的事实,当然本篇博客也不是要说这些,优秀的源码总是学习的最佳案例尤其是 Google 出品的 volley ,短小精悍的体积相比一些动辄十几个包成千上百个类的框架源码,无疑是非常适合用来阅读学习的。技术的发展...

Mr_lanqiu的博客 588

浅读网络框架Volley源码

  对于安卓的网络开发,我们可能会用到谷歌自家的网络请求框架Volley,下面来看一下Volley是怎样进行网络请求的。所谓知其所然,并知所以然。于是用自己仅有的水平分析一下其源码,不对的地方欢迎提出。   使用Volley框架进行网络开发,一般是三个步骤,首先是初始化一个 RequsetQueue: RequestQueue requestQueue = Volley.newReque...

weixin_30906701的博客 76

Volley原理和Okhttp原理

Volley原理和Okhttp原理

TianciZhu的博客 1345

第五章 网络 之 Android网络知识&框架

文章目录(一)描述一次网络请求的流程(二)TCP与UDP的区别(三)说一下三次握手,四次挥手的具体细节【画图】(四)client如何确定自己发送的消息被server收到?(五)HTTP报文结构(六)GET与PUT区别(七)Cookie与Session的联系&区别(八)描述一下HTTPS(九)HTTPS中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?(十)描述一下...

Stay Hungry Stay Foolish 求知若饥 虚心若愚 3667
上一篇: Android开发框架FastAndroid详解
下一篇: 关于Android在线支付Alipay(支付宝)开发的经验分享
ht_android
博客等级 码龄12年 33粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值