volley源码分析
文章平均质量分 83
vvzhouruifeng
It's never too late to change your life!!!
展开
-
Android中的volley_10_Response和NetworkResponse
每次在文章的开头,都会感叹volley的面向接口的编程思想。当刚刚写本篇文章时,对这种思想突然有了更深一层的理解,在volley的核心流程中,往往都是接口在冲锋陷阵,这样的话,扩展性是极强的,因为你可以使用volley默认的实现类,也可以自己定义自己的实现类。非常优秀的框架设计,得好好研究研究怎么应用在自己的项目中。嘿嘿,就不感叹volley了。这里主要说下volley中的响应Respon原创 2015-06-04 20:45:59 · 2695 阅读 · 0 评论 -
Android中的volley_9_ResponseDelivery和ExecutorDelivery
ResponseDelivery定义为一个接口,这是volley中最为有特色的定义方式,无论是Request Network还是HttpStack,每一个小模块都是用一个接口来对接的,大大降低了模块之间的耦合性,同时由于模块之间对接是接口,这样扩展性极佳。ResponseDelivery,从字面也可以理解,其主要的作用就是传递响应。内部定义了三个方法:/** * Parses a原创 2015-06-04 20:01:51 · 1025 阅读 · 0 评论 -
Android中的volley_3_网络请求HttpStack、HttpClientStack和HurlStack
在volley中真正的网络请求是由HttpStack定义的,这是一个接口,它唯一的一个方法就是执行网路请求获取响应。而HttpClientStack和HurlStack是该接口的实现类,对应不同的网络请求的底层实现,HttpClientStack是基于HttpClient的,HurlStack是基于HttpURLConnection的。先看HttpStack的源码:package com.原创 2015-06-02 08:44:43 · 1583 阅读 · 0 评论 -
Android中的volley_5_字节数组缓冲池ByteArrayPool 和使用缓冲池技术的自定义的PoolingByteArrayOutputStream
在对响应的实体进行操作的时候,使用到了byte[] ,由于volley是轻量级频次高的网络请求框架,因此会大量使用到byte[] ,这样的话会频繁创建和销毁byte[]。为了提高性能,volley定义了一个byte[]缓冲池,即ByteArrayPool 。在ByteArrayPool 内,定义了 两个集合,分别是存储按大小顺序排列byte[]的list 和 按使用先后顺序排列byte[原创 2015-06-03 18:12:49 · 2818 阅读 · 1 评论 -
Android中的volley_4_执行网络请求的接口Network及其实现类BasicNetwork
在volley中执行网络请求的接口是Network,其实现类是BasicNetwork。需要注意的是,将Network与HttpStack、HttpClientStack 、HurlStack进行区别。HttpStack是定义网络请求的,是使用HttpClient或者HttpURLConnection来连接网络。Network则是使用HttpStack来执行网络请求。Network接口内定原创 2015-06-03 17:43:32 · 1048 阅读 · 0 评论 -
Android中的volley_8_缓存调度线程CacheDispatcher
CacheDispatcher也是volley的核心类之一。跟NetworkDispatcher一样,CacheDispatcher也是一个线程,该线程的作用就是从缓存队列中获取request,根据request的cacheKey从缓存Cache内获取该request的响应。在RequestQueue内,会对所有的request进行分发,如果一个request是可以被缓存的,那么就会分发到缓存原创 2015-06-04 19:17:26 · 628 阅读 · 0 评论 -
Android中的volley_11_Request
Request也是volley的核心类之一,是一个抽象类。volley中所有的请求都是由Request的子类来完成的,它定义了一些公共性的内容,并抽象出来,其子类只需要继承该类并实现其预留的抽象方法即可。比如volley默认实现的请求如StringRequest、JsonRequest、JsonObjectRequest等都是继承自Request。再比如在Google的官方文档中定义的GsonRe原创 2015-06-05 20:07:45 · 552 阅读 · 0 评论 -
Android中的volley_6_volley的核心RequestQueue类
可以说RequestQueue是volley最为核心的类了,其他一切都是围绕着该类进行运转的。之前讲述的Volley类,其主要工作就是创建RequestQueue的实例并start()。用最概括的话来描述RequestQueue就是:汇集所有Request并分发给缓存和网络调度线程。RequestQueue的工作流程是这样的:1.创建RequestQueue实例后,调用start()方原创 2015-06-04 09:05:33 · 589 阅读 · 0 评论 -
Android中的volley_12_请求重试策略RetryPolicy和DefaultRetryPolicy
面相接口的编程思想已经深入到volley的骨髓中了,当学习完volley,就算没有别的收货,但面相接口的编程思想必定深深印在脑海中,从HttpStack、到Network、再到Request等都是利用的接口思想。今天所说的请求重试策略RetryPolicy依然遵循了此思想,不得不令人感叹!!!其实,直到现在这一刻,才忽然意识到,似乎volley就是利用接口来搭建其骨架的,之前的时候知道voll原创 2015-06-06 08:31:20 · 5565 阅读 · 1 评论 -
Android中的volley_2_类Volley
类Volley分析原创 2015-05-28 18:04:52 · 507 阅读 · 0 评论 -
Android中的volley_7_网络调度线程NetworkDispatcher
NetworkDispatcher也是volley中的核心类,该类的作用就是从发送网络请求获取响应。要知道,在定义该类的时候public class NetworkDispatcher extends Thread {} ,很明显这是一个线程。则必然有run()方法,因此从队列中获取request并执行都是在run()方法内执行的。所以在RequestQueue类中的start()方法内原创 2015-06-04 18:09:59 · 523 阅读 · 0 评论 -
Android中的volley_1_几篇值得参考的文章
volley出来已经有一段时间,这是一个轻量级的、非常优秀的网络请求框架。有许多文章介绍volley的使用和源码分析。我在学习Volley过程中主要参考了下面的几篇文章,这些文章对我启发很大,并在自己的文章和demo中借鉴了很多。原创 2015-05-28 11:41:00 · 506 阅读 · 0 评论