本次编写的Volley教程现在看来其实已经跟不上时代了,但是技术总有它光辉的一面。所以想和大家一起通过源码解析的方式学习优秀开源项目的精髓。
本次教程将先会和大家一起了解一下Volley的前世今生,摸清他的底细之后再学会如何使用,我已经做好一个Volley的Sample了,欢迎你star或者fork,最后才从源码的角度上来分析Volley的工作流程。

网上关于Volley的文章很多,但是反复看了很久,值得推荐的依旧是郭霖的文章,写的真心不错。我也借鉴了他的很多思路,不过也做了修改,希望大家一起学习。

Android Volley完全解析(一),初识Volley的基本用法
Android Volley完全解析(二),使用Volley加载网络图片
Android Volley完全解析(三),定制自己的Request
Android Volley完全解析(四),带你从源码的角度理解Volley
Android官方Volley教程(英文好的同学可以自学)
Volley的Github主页

瞧瞧Volley是何物

Volley简介

Google在2013年的I/O大会上(是的今年的IO大会很快就会发布android8.0了)正式发布了Volley,google官方称Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
Volley名称的由来是:

1
2
a burst or emission of many things or a large amount at once.
突然或大量的东西或大量的一次。

别想歪了哦😏,所以顾名思义,Volley特别适合数据量不大但是通信频繁的场景。

Volley的用武之地

Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

Volley提供给我们的功能

  • Json,图像等异步下载
  • 网络请求的排序(scheduling)
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和 Activity 的生命周期联动(Activity 结束时同时取消所有网络请求)

Volley的优点

  • 非常适合进行数据量不大,但通信频繁的网络操作
  • 可直接在主线程调用服务端并处理返回结果(这一点可以很方便的更新UI)
  • 可以取消请求,容易扩展,面向接口编程
  • 网络请求线程NetworkDispatcher默认开启了4个和1个CacheDispatcher总共5个线程
  • 通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致
  • 一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义
  • 默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现

Volley的缺点

  • 使用的是httpclient、HttpURLConnection
  • 6.0不支持httpclient了,如果想支持得添加org.apache.http.legacy.jar
  • 对大文件下载 Volley的表现非常糟糕
  • 只支持http请求
  • 图片加载性能一般
  • 最重要的一点就是现在已经过时了,已经有其他诸如okhttp等优秀开源框架可以代替

最后先给大家看一下最终程序的运行效果

Volley程序截图
Volley程序截图

下节课我们讲一起编写一个小程序来实现Volley的一些基本功能,see u ^_+