Volley的原理解析
在开发中,我们使用的框架可以说是很多,从开始的原生的网络请求HttpClient到httpUrlConnection,再到后面那些android大神封装的AsyncHttpClient,异步请求网络,和以前的框架Afinal 到 Xutils3.0等一系列的网络框架.
知道google推出最新的框架volley,又是在技术上推进了一大步.也许现在我们大家都在说,volley都已经过时了,现在大家都在使用OkHttp3,OKgo,RxJava+Retrofit等一系列最新的框架.虽然都会用,网络框架,当面试官问到你所用的网络框架的原理的时候.你一下子就云里雾里了.网络框架使我们app的核心部分,我们不仅知其然,还要知其所以然.对其源码进行解剖.
看过官方文档的开发人员,就知道,官方给了一个volley的工作流程图,如下:
文章图片
Paste_Image.png 也许你光看这样的流程图,你根本不知道讲的什么.那么接下来我们结合源代码,进行一步一步的分析,也许你就明白
首先使用volley的第一步骤是什么呢?
Volley.newRequestQueue(Context)来获取一个RequestQueue对象,接着我们就从这个方法开始入手
代码:
文章图片
Paste_Image.png
【Volley的原理解析】从代码中我们可以清楚的看到,该方法只执行了一个方法,那么我们进入这个方法可以看到
文章图片
Paste_Image.png
我们可以看到了面的statck,其实hurlStatck其实内部就是HttpUrlConnection进行网络通信的.最后调用了Start()方法
接下来我们进入start()方法,看执行了什么
文章图片
Paste_Image.png
先是创建了CacheDispacher实例,然后调用了他的start方法,接着for循环4次,就会有5个线程在后台运行,不断的等待网络请求的到来,得到RequestQueue后,我们调用add方法. 未完待续…………
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量