Volley框架的原理剖析-->

Volley的主要特点:

  1.扩展性强.Volley中大多数都是基于接口的设计,可配置性强.

  2.一定程度符合Http规范,包括返回ResponseCode的处理,请求头的处理,缓存机制的支持等.并支持重试及优先级定义.

  3.默认Android2.3及以上基于HttpURLConnection,2.3以下基于HttpCllient.

  4.提供简便的图片加载工具.

Volley主要是通过两种Dispatch Thread不断从RequestQueue中取出请求,根据是否已缓存调用CacheNetwork这两类数据获取接口之一,从内存缓存或是服务器取得请求的数据,然后交由ResponseDelivery去做结果分发及回调处理。

  Volley 的调用比较简单,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue后,只需要往这个RequestQueue不断 add Request 即可。

  Volley:Volley 对外暴露的 API,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue

  Request:表示一个请求的抽象类。StringRequestJsonRequestImageRequest 都是它的子类,表示某种类型的请求。

  RequestQueue:表示请求队列,里面包含一个CacheDispatcher(用于处理走缓存请求的调度线程)、NetworkDispatcher数组(用于处理走网络请求的调度线程),一个ResponseDelivery(返回结果分发接口),通过 start() 函数启动时会启动CacheDispatcherNetworkDispatchers

//----------------------------------------------------------------------------------------------

  Volley.java是个工具类,作用是构建一个可用于添加网络请求的RequestQueue对象.

  Volley.java 有两个重载的静态方法。

  public static RequestQueue newRequestQueue(Context context)

  public static RequestQueue newRequestQueue(Context context, HttpStack stack)

  第一个方法的实现调用了第二个方法,传 HttpStack 参数为 null。
  第二个方法中,如果 HttpStatck 参数为 null,则如果系统在 Gingerbread 及之后(即 API Level >= 9),采用基于 HttpURLConnection 的 HurlStack,如果小于 9,采用基于 HttpClient 的 HttpClientStack。

  RequestQueue.java:Volley框架的核心类,将请求Request加入到一个运行的RequestQueue里面,来完成请求操作.

时间: 2024-12-10 19:07:12

Volley框架的原理剖析-->的相关文章

第一篇:Python高性能Web框架Tornado原理剖析

本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码 2.为Python开发一个完善的MVC框架 首先将带着大家一起来剖析基于python编写的Web框架 tornado ,本着易读易懂的目标来写这一系列,寄希让小白也能zeng明白其中的道理,与其说剖析还不如说是白话,因为本系列都会用通俗的语言去描述Web框架中的各个知识点. 一个脚本引发的一场"血案".... 运行脚本并在浏览器上访问http://127.0.0.1:8080 #!/usr/bin/env py

Android——Volley框架学习总结

Volley框架特点: 适用于频繁请求而每次请求数据量不会很大: 在请求的基础上做了磁盘缓存: 防止多次相同请求浪费资源: 提供String.Json.图片异步下载: 网络请求的优先级处理: 图片请求无需担心生命周期问题. Volley框架使用: 首先,通过Volley的静态方法new一个请求队列 1 RequestQueue mQueue = Volley.newRequestQueue(context); 假如我们创建一个StringRequest实例(Volley提供,StringRequ

Koa框架实践与中间件原理剖析

Koa框架实践与中间件原理剖析 最近尝试用了一下Koa,并在此记录一下使用心得. 注意:本文是以读者已经了解Generator和Promise为前提在写的,因为单单Generator和Promise都能够写一篇博文来讲解介绍了,所以就不在这里赘述.网上资料很多,可以自行查阅. Koa是Express原班人马打造的一个更小,基于nodejs平台的下一代web开发框架.Koa的精妙之处就在于其使用generator和promise,实现了一种更为有趣的中间件系统,Koa的中间件是一系列generat

volley 框架剖析(一) 面向接口的编程

Volley是Google出品的一个轻量级的网络框架,默认实现,主要用于小数据量的网络请求.这里就按从粗到细,自上而下的过程,给大家剖析这个牛X的框架. 这个框架的代码量虽少,但却把面向接口的编程这个原则发挥的淋漓尽致.这个框架是怎么构成的呢? 先看包的结构. 有com.android.volley 及 com.android.volley.toolbox两个包. 其中com.android.volley中的接口和类,是基础框架,构成了一个基于队列的网络请求功能. 而com.android.vo

Android自动化测试框架新书:<<MonnkeyRunner实现原理剖析>>交流

大家觉得编写一本描述MonkeyRunner原理分析的书籍如何?估计大概10万字左右.内容大概分布如下: Monkey实现原理: 去描述运行在目标安卓机器的monkey是如何运行并处理MonkeyRunner发送过来的事件请求并把事件注入到系统的 Monkey命令处理源码情景分析:去分析关键命令事件如touch,tap等的实现原理 AndroidDebugMonitor(adb)运行原理: 分析MonkeyRunner是如何使用ddmlib库的AndroidDebugMonitor来跟目标安卓设

MapReduce/Hbase进阶提升(原理剖析、实战演练)

什么是MapReduce? MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性.他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一

Android网络通信Volley框架源码浅析(三)

尊重原创 http://write.blog.csdn.net/postedit/26002961 通过前面浅析(一)和浅析(二)的分析,相信大家对于Volley有了初步的认识,但是如果想更深入的理解,还需要靠大家多多看源码. 这篇文章中我们主要来研究一下使用Volley框架请求大量图片的原理,在Android的应用中,通过http请求获取的数据主要有三类: 1.json 2.xml 3.Image 其中json和xml的获取其实原理很简单,使用Volley获取感觉有点大财小用了,了解Volle

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.ConfigureServices 3.Configure方法

Volley框架的流程图分析

      接着上一篇Volley框架的使用,这一篇主要主要讲Volley框架运作的原理.主要使用流程图来叙述,简单的分析了整个流程的过程,具体的请参考源代码或者查看我上一篇在文章末尾添上的链接. 一.Volley的准备 生成一个RequestQueue的队列. 二.用户添加Request 三.阻塞线程 (1)缓存队列处理器 (2)网络请求处理器 四.数据分发器 作为网络回应的处理器 五.总结 1. 当一个RequestQueue被成功申请后会开启一个CacheDispatcher(缓存调度器)