
Volley源码探索
Jack_King007
永远抱着一个谦虚的心,做一个小菜鸟,去学习知识
展开
-
Volley的框架解读一(Http的封装)
先瞄瞄UML类图 在Volley中真正的网络请求是由HttpStack定义的,这是一个接口,它唯一的一个方法就是执行网路请求获取响应。而HttpClientStack和HurlStack是该接口的实现类,对应不同的网络请求的底层实现,HttpClientStack是基于HttpClient的,HurlStack是基于HttpURLConnection的。先看看这个父接口(HttpStack)源码解原创 2017-09-15 17:46:18 · 454 阅读 · 0 评论 -
Volley的框架解读二(Http访问及处理)
先看UML图 源码解读绝招二:把握类的主要流程,大体看一下用到的类,看看方法,猜一下用法,别去抓细节。在volley中执行网络请求的接口是Network,其实现类是BasicNetwork。需要注意的是,将Network与HttpStack、HttpClientStack 、HurlStack进行区别。HttpStack是定义网络请求的,是使用HttpClient或者HttpURLConnect原创 2017-09-17 16:31:23 · 497 阅读 · 0 评论 -
Volley的框架解读三(字节流的优化)
先看UML。其实用到这两个东西就是在访问网络的时候 源码解读绝招二:你还记得UML,和设计模式二人组么,用程序员共用的语言去看他们吧~在对响应的实体进行操作的时候,使用到了byte[] ,由于volley是轻量级频次高的网络请求框架,因此会大量使用到byte[] ,这样的话会频繁创建和销毁byte[]。为了提高性能,volley定义了一个byte[]缓冲池,即ByteArrayPool原创 2017-09-17 19:45:00 · 437 阅读 · 0 评论 -
Volley的框架解读四(请求队列RequestQueue)
先看UML 可以说RequestQueue是volley最为核心的类了,其他一切都是围绕着该类进行运转的。之前讲述的Volley类,其主要工作就是创建RequestQueue的实例并start()。用最概括的话来描述RequestQueue就是:汇集所有Request并分发给缓存和网络调度线程。RequestQueue的工作流程是这样的: 创建RequestQueue实例后,调用start(原创 2017-09-18 13:52:43 · 1313 阅读 · 0 评论 -
Volley的框架解读五(网络调度NetworkDispatcher)
先看UML NetworkDispatcher也是volley中的核心类,该类的是一个线程,主要是在从阻塞队列中获取request,然后去请求网络,然后获得响应后ResponseDelivery,去分发要知道,在定义该类的时候public class NetworkDispatcher extends Thread {} ,很明显这是一个线程。则必然有run()方法,因此从队列中获取reque原创 2017-09-18 15:24:08 · 646 阅读 · 0 评论 -
Volley的框架解读六(消息分发器ResponseDelivery和ExecutorDelivery)
先看看UML ResponseDelivery定义为一个接口,这是volley中最为有特色的定义方式,无论是Request Network还是HttpStack,每一个小模块都是用一个接口来对接的,大大降低了模块之间的耦合性,同时由于模块之间对接是接口,这样扩展性极佳。ResponseDelivery,从字面也可以理解,其主要的作用就是传递响应。内部定义了三个方法:/** * Parse原创 2017-09-18 15:35:26 · 588 阅读 · 0 评论 -
Volley的框架解读七(Request)
先看看UML图 Request也是volley的核心类之一,是一个抽象类。volley中所有的请求都是由Request的子类来完成的,它定义了一些公共性的内容,并抽象出来,其子类只需要继承该类并实现其预留的抽象方法即可。比如volley默认实现的请求如StringRequest、JsonRequest、JsonObjectRequest等都是继承自Request。再比如在Google的官方文档中定义原创 2017-09-21 10:07:38 · 442 阅读 · 0 评论 -
Volley的框架的终结篇
Volley的框架的终结篇之前都是各个模块讲解,当然Volley其实也是各个模块分开了,职责分明,这样探索源码,可以各个突破,最后顺着使用流程去看一遍就会融汇贯通使用 RequestQueue mQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest("h原创 2017-09-21 11:19:51 · 371 阅读 · 0 评论 -
Volley的框架解读准备一HttpURLConnection
请求响应流程设置连接参数的方法 setAllowUserInteraction setDoInput setDoOutput setIfModifiedSince setUseCaches setDefaultAllowUserInteraction setDefaultUseCaches设置请求头或响应头HTTP请求允许一个key带多个用逗原创 2017-09-15 17:42:22 · 638 阅读 · 0 评论