Volley详解(三)——响应(Response)

来源:互联网 发布:5轴加工中心软件编程 编辑:程序博客网 时间:2024/05/13 06:21

概述

本篇介绍响应相关的类,包括NetworkResponseResponseResponseDeliveryExecutorDelivery

Part 1 ——NetworkResponse

表示网络请求返回的原始结果,比较简单,主要属性有:

  • int statusCode:状态码
  • byte[] data:返回结果的主体部分
  • Map<String, String> headers:返回结果的头
  • boolean notModified:如果服务器返回304,则该变量为true,说明服务器数据在上次请求后没有变化
  • long networkTimeMs:此次网络请求花费的总时间

Part 2 ——Response

表示NetworkResponse经过parse之后的响应,定义了内部接口Response<T>$Listener<T>Response<T>$ErrorListener,分别负责响应结果和响应错误的回调。

主要属性有:

T result:最终的返回结果
Cache.Entry cacheEntry:缓存元信息
VolleyError error:错误信息

如果正常返回,则errornull,否则,resultcacheEntrynull

Part 3 ——ResponseDelivery

处理返回结果的接口,定义了三个抽象方法:

public void postResponse(Request<?> request, Response<?> response);public void postResponse(Request<?> request, Response<?> response, Runnable runnable);public void postError(Request<?> request, VolleyError error);

postResponse()用于处理正确的返回,postError()用于处理错误的返回。

Part 4 ——ExecutorDelivery

这是VolleyDelivery的默认实现。

内部类ResponseDeliveryRunnable

定义了内部类ExecutorDelivery$ResponseDeliveryRunnable,该类继承了Runnable,其run()方法负责处理相关的回调,该Runnable并不会被直接调用,而是会被发送到主线程的消息队列中,等待主线程处理。它的构造函数为:

public ResponseDeliveryRunnable(Request request, Response response, Runnable runnable);

其中第三个参数runnable是对该请求需要做的额外处理,如果没有则传入null即可。

执行器

维护了执行器Executor mResponsePoster,重写了execute()方法,唯一功能是将前述的Runnable对象发送到Handler所对应的消息队列,在Volley的默认实现中,该Handler为主线程的Handler

注意:这只是一个Executor接口,不是线程池,不会产生新的线程,它只负责把构造出来的Runnable对象发送给主线程,仅此而已。

重写的方法

既然实现了ResponseDelivery接口,显然要重写三个抽象方法,具体很简单,要做的就是调用mResponsePosterexecute(),把相应的Runnable发送到主线程。

0 0
原创粉丝点击