Volley详解(五)——网络(Network)

来源:互联网 发布:德州扑克入门知乎 编辑:程序博客网 时间:2024/06/11 09:58

概述

本篇介绍网络相关的类,包括NetworkBasicNetworkNetworkDispatcher


Part 1 ——Network

表示网络请求的接口,只有一个方法,用于发起网络请求:

public NetworkResponse performRequest(Request<?> request) throws VolleyError;

Part 2 ——BasicNetwork

Volley中Network接口的默认实现。维护了两个主要成员:

  • HttpStack mHttpStack:执行网络请求的接口,返回HttpResponse
  • ByteArrayPool mPool:用于临时数据的读写和暂存

mHttpStack发起网络请求,返回HttpResponse,根据StateCode,对缓存做相应的处理,然后将结果封装成NetworkResponse并返回。


Part 3 ——HttpStack

执行网络请求的接口,有两个实现类:

  • HurlStack:由HttpUrlConnection实现,API 9及以上默认使用该类。
  • HttpClientStack:由AndroidHttpClient实现,API 9以下默认使用该类。

Part 4 ——NetworkDispatcher

网络分发线程,继承了Thread,维护了网络请求队列mNetworkQueue,缓存mCache,响应分发对象mDelivery等,负责从网络请求队列mCacheQueue中依次获取请求并进行处理,如果队列为空,则阻塞,直到队列不为空。

对于获取到的每个Request,调用mNetwork发起网络请求,将返回的请求结果NetworkResponse转化为Response<T>,加入缓存,最后交给mDelivery做回调处理。

0 0