Volley内部主要涉及有Request(请求),RequestQueue(请求队列),CacheDispatcher(缓存分发器,本质是缓存线程,一般只有一一条),NetworkDispather(网络分发器,本质是多线程),(背后采用线程池管理)。ResponseDelivery(Response分发器),NetWork(网络处理)。
一个Request从产生到消费的过程主要包含如下:
将通过RequestQueue的add(Requeue)将Requeue添加到RequeueQueue的mCurrentRequest(本质是Set),然后根据Request的shouldCache判断是否加入缓存队列(BolockingQueue mCacheQueue),然后判断是否含有这个缓存,或者缓存是否过期,或者缓存过期而希望刷新缓存,都会将 Request加入到网络队列(BolockingQueue mQueue),然后NetWorkDispatcher将Request派给NetWork处理,NetWork处理后返回数据,根据属性判断是否将结果加入缓存,然后将结果包装成自定义类返回,成功则回调Resopnse.Listener,失败则回调ErrorListener。
相反,则在缓存队列中寻找结果。