volley
RequestQueue CacheDispatcher,一个线程 NetWorkDispatcher,有4个线程
有stop(),finish()方法关闭
支持StringRequest,JsonRequest,ImageRequest,ImageLoader,ImageLoaderListener
BlockingQueue == 0时会一直阻塞
分层解析
基础层 异常 log 重试机制 缓存
网络层
控制层 dispatcher
应用层
读懂Volley,必须要理解的几个问题 https://blog.csdn.net/fenggering/article/details/88563418
“史诗级”的Volley源码您真的彻底弄懂了? https://blog.csdn.net/zengqiang11111/article/details/75275871
#### Volley之ByteArrayPool——LruCache实现 2个byte数组,一个LinkedList,一个ArrayList
``` /** * byte[]待删集合,记录了byte[]的使用顺序。当缓存的byte数目超过指定的最大值时,会回收该list集合中的第一个元素。 * 每一次从变量mBuffersBySize中获取到合适的byte[]时,会将返回值从该集合中删除,因为这个byte[]是最近使用的。 * 每一次回收该集合中第0个元素,保证了回收的byte[]是使用时间最久远的。 */ private List<byte[]> mBuffersByLastUse = new LinkedList<>(); /** * byte[]的真正缓存list集合。每一次获取时都是从该集合中获取或者新生成 */ private List<byte[]> mBuffersBySize = new ArrayList<>(64);
```
## 源码解析 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