Android-Volley-Demo

基于android volley库的demo,并附上volley源码和注释理解。

概要分析

总体设计:

01b6b129f52b1a5a40216375e8b541a9.png

Response的解析流程:

ce1d690a4c75851bd612e4d0a4b86191.png

1、DiskBasedCache中缓存有该request,则用Cache.Entity在构造NetworkResponse对象。

2、缓存中没有,则加入网络请求队列,BasicNetwork的performRequest()方法中会用HttpResponse构造NetworkResponse对象,而HttpResponse的获取具体实现方法有两种:HttpURLConnection(API >= 9)和HttpClient。

3、NetworkResponse会被具体的Request解析为对应的Response,比如StringRequest、JsonRequest、ImageRequest中都实现了自己的parseNetworkResponse()方法。

4、得到Response后,再由ResponseDelivery(具体实现类是ExecutorDelivery).postResponse(request, response)来发送reponse。

5、最后具体的Request会在deliverResponse()方法中收到消息,并在该方法中回掉Listener给具体调用者。

关于Volley源码的解析,有很多写的不错,可以拿来参考:

[源码分析](http://www.codekk.com/open-source-project-analysis/detail/Android/grumoon/Volley%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90)

[磁盘缓存DiskBasedCache](http://blog.csdn.net/asdzheng/article/details/45955653)

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐