google开源项目volley 简要分析

一、volley是一个网络请求框架。

二、快速建立一个网络请求:

RequestQueue queue = Volley.newRequestQueue(this);//1.建立请求队列
String url ="http://www.google.com";

// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, //2.建立网络请求
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        //在此对正确响应进行处理
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
       //在此进行错误响应处理
    }
});
// Add the request to the RequestQueue.
queue.add(stringRequest);//3.将请求加入到队列中

三、网络请求框架原理

请看图:

 

有三个重要组成部分:

1.请求队列

2.缓存分发器

3.网络分发器

 

其中,请求队列中包含两个BlockingQueue 一个是给缓存分发器的,另一个是给网络分发器。这两个分发器都是继承线程的类。

默认情况下,请求队列中只有一个缓存分发器,4个网络分发器,他们通过从各自阻塞队列中拿到请求然后开始进行网络处理或请求。

正常情况下,请求先进入缓分发器,然后如果没有命中,会进入一个网络分发器进行处理。

网络分发器会调用网络接口进行处理,默认网络接口是HurlStack(使用的是HttpURLConnection).用户也可以自定义使用别的网络请求框架(比如OkHttp)

当网络请求结束后,会将响应结果封装后,交给ResponseDelivery 实际是ExecutorDelivery进行处理,它只是将响应结果通过主线程的handler发送到主线程的队列中。

随后的响应回调会进行处理,即上面所说的onResponse或onErrorResponse。

*重试机制

重试机制是volley自带的一种机制,它会根据第一次网络请求的返回结果判断是否隔段时间重试

重试发生在Network接口里面,所以说StringRequest其实并不知道发生了重试(当然mark标志会体现出来),它根据RetryPolicy来实现重试机制




posted @ 2018-03-07 10:24  lightverse  阅读(172)  评论(0编辑  收藏  举报