Volley源码总结

基本操作

1.创建一个请求队列

RequestQueue mQueue = Volley.newRequestQueue(context); 

2.创建具体的请求对象

StringRequest stringRequest = new StringRequest("http://www.baidu.com",  
                        new Response.Listener<String>() {  
                            @Override  
                            public void onResponse(String response) {  
                                Log.d("TAG", response);  
                            }  
                        }, new Response.ErrorListener() {  
                            @Override  
                            public void onErrorResponse(VolleyError error) {  
                                Log.e("TAG", error.getMessage(), error);  
                            }  
                        });  

3.将请求添加到请求队列

mQueue.add(stringRequest);  

Volley工作原理图

这里写图片描述

流程总结:
创建请求队列的时候,启动了缓存调度线程和网络调度线程
添加请求的时候,首先判断当前请求是否应该缓存,如果不应该缓存则直接添加到网络请求队列,应该缓存的话则添加到缓存队列,默认情况下,每条请求都是可以缓存的,所以每条请求默认都会添加到缓存队列。

缓存调度线程启动后,会尝试从缓存中获取数据,如果我为空则加入到网络请求队列,如果不为空再判断是不是过期了,过期了同样添加到网络请求队列。

网络调度线程启动会,会调用BasicNetwork的performRequest发送网络请求,在这个方法里面调用之前创建的HttpStack的performRequest执行网络请求,最后会将服务器返回的结果封装成一个NetworkResponse对象返回

NetworkResponse networkResponse = mNetwork.performRequest(request); 

在网络请求调度器中接收到这个结果后,会调用

Response<?> response = request.parseNetworkResponse(networkResponse);  

同时写入缓存

if (request.shouldCache() && response.cacheEntry != null) {  
                    mCache.put(request.getCacheKey(), response.cacheEntry);  
                    request.addMarker("network-cache-written");  
                }  

最后调用下面的代码将解析的数据进行回调。

 mDelivery.postResponse(request, response);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值