Volley随笔之网络线程和缓存线程

1、网络线程 NetworkDispatcher

Volley框架中提供NetworkDispatcher类做为工做线程(work thread)处理网络请求,它继承了Thread。NetworkDispatcher在其run()方法中调用了缓存

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);


将网络请求线程的优先级设置成后台线程,后台线程是一个比通常线程优先级低的线程,不过可以最小限度的影响用户界面响应。
工做线程先从请求网络队列networkQueue中读取Request,而后执行网络请求,接着解析返回数据,最后判断数据是否须要缓存,整个过程都在工做线程的run()方法中实现。网络

2、缓存线程 CacheDispatcher

Volley框架提供CacheDispatcher类做为缓存线程来处理请求的缓存,它集成了Thread类,也一样是后台线程。CacheDispatcher每次会从缓存队列cacheQueue中获取网络请求,若是缓存中上次网络请求的返回数据没有过时,则不执行网络操做而直接返回给客户端缓存数据;若是缓存数据过时,则将请求放到网络队列networkQueue。框架

3、请求队列 RequestQueue

RequestQueue类在初始化的时候,会建立一个CacheDispatcher缓存线程和多个NetworkDispatcher网络线程。每次向队列RequestQueue添加网络请求Request的时候,队列会检查请求是否有缓存标志cacheKey,若是没有改标识则直接将请求放到网络队列networkQueue,若是有该标识则将请求放到缓存队列cacheQueue。spa

相关文章
相关标签/搜索