Android Volly源码分析之执行线程
来源:互联网 发布:中国的富豪阶级 知乎 编辑:程序博客网 时间:2024/06/05 05:59
CacheDispatcher作为cache线程,只有一个线程
当将一个request加入网络请求队列时,先从Cache中查找是否有相同的请求,查找key值为
final Request request = mCacheQueue.take(); request.addMarker("cache-queue-take"); Cache.Entry entry = mCache.get(request.getCacheKey());
其中key值为请求的url ,根据请求是否过期,是否需要刷新操作,来进行操作。
NetWorkDispatcher extends Thread 做为具体执行网络请求操作的线程,在
Response<?> response = request.parseNetworkResponse(networkResponse); request.addMarker("network-parse-complete"); mDelivery.postResponse(request, response);
中可以看出在获取网络请求的response之后mDelivery.postResponse(request, response);将操作转移到了主线程(通过ExecutorDelivery中的handler实现)
if (networkResponse.notModified && request.hasHadResponseDelivered()) { request.finish("not-modified"); continue; }
根据返回码304,得出response和上次请求没有修改,直接结束,并加入not-modified标识。以便于后续处理。
实际执行发送网络请求的操作在BasicNetwork–》HttPStack—》CurlStack和HttpClientStack中
0 0
- Android Volly源码分析之执行线程
- 从源码分析Volly的JSONObjectRequest
- Appium Android Bootstrap源码分析之命令解析执行
- Appium Android Bootstrap源码分析之命令解析执行
- 《android framework常用api源码分析》之HandlerThread handler线程
- Android线程AsyncTask源码分析
- Android线程HandlerThread源码分析
- Android线程IntentService源码分析
- Mybatis源码分析之执行完整分析
- volly的使用【源码解析volly】(四)
- angularjs源码分析之:angularjs执行流程
- ForkJoin 源码分析之ForkJoinPool的执行
- Django源码分析之执行入口
- angularjs源码分析之:angularjs执行流程
- springmvc----源码分析之springmvc执行流程
- Android动画执行过程源码分析
- [Android] Retrofit 执行流程源码分析
- quartz源码分析——执行引擎和线程模型
- id、静态类型、自省-iOS初学
- C#界面设计之菜单栏的使用
- iOS屏幕旋转
- Could not read symbols解决方法
- maven
- Android Volly源码分析之执行线程
- 经典算法——堆排序笔试题
- Bootstrap弹出窗示例
- WSDL文件详解
- 2016阿里算法工程师笔试题 (二)
- loadrunner12
- JAVA基础知识点(自己总结的)
- 自定义序列顺序思想 Permutations
- 三大WEB服务器apache,nginx,lighttpd