胡凯 · 更新于 2018-11-28 11:00:43

使用 Volley 传输网络数据

编写:kesenhoo - 原文:http://developer.android.com/training/volley/index.html

Volley 是一个 HTTP 库,它能够帮助 Android app 更方便地执行网络操作,最重要的是,它更快速高效。我们可以通过开源的 AOSP 仓库获取到 Volley 。

YOU SHOULD ALSO SEE

使用 Volley 来编写一个 app,请参考2013 Google I/O schedule app。另外需要特别关注下面2个部分:

VIDEO - Volley: Easy,Fast Networking for Android


Volley 有如下的优点:

  • 自动调度网络请求。
  • 高并发网络连接。
  • 通过标准的 HTTP cache coherence(高速缓存一致性)缓存磁盘和内存透明的响应。
  • 支持指定请求的优先级。
  • 撤销请求 API。我们可以取消单个请求,或者指定取消请求队列中的一个区域。
  • 框架容易被定制,例如,定制重试或者回退功能。
  • 强大的指令(Strong ordering)可以使得异步加载网络数据并正确地显示到 UI 的操作更加简单。
  • 包含了调试与追踪工具。

Volley 擅长执行用来显示 UI 的 RPC 类型操作,例如获取搜索结果的数据。它轻松的整合了任何协议,并输出操作结果的数据,可以是原始的字符串,也可以是图片,或者是 JSON。通过提供内置的我们可能使用到的功能,Volley 可以使得我们免去重复编写样板代码,使我们可以把关注点放在 app 的功能逻辑上。

Volley 不适合用来下载大的数据文件。因为 Volley 会保持在解析的过程中所有的响应。对于下载大量的数据操作,请考虑使用 DownloadManager

Volley 框架的核心代码是托管在 AOSP 仓库的 frameworks/volley 中,相关的工具放在 toolbox 下。把 Volley 添加到项目中最简便的方法是 Clone 仓库,然后把它设置为一个 library project:

  1. 通过下面的命令来Clone仓库:

      git clone https://android.googlesource.com/platform/frameworks/volley
  2. 以一个 Android library project 的方式导入下载的源代码到你的项目中。(如果你使用 Eclipse,请参考 Managing Projects from Eclipse with ADT,或者编译成一个 .jar 文件。

Lessons

发送一个简单的网络请求(Sending a Simple Request)

学习如何通过 Volley 默认的行为发送一个简单的请求,以及如何取消一个请求。

建立一个请求队列(Setting Up a RequestQueue)

学习如何建立一个请求队列(RequestQueue),以及如何实现一个单例模式来创建一个请求队列,使 RequestQueue 能够持续保持在我们 app 的生命周期中。

生成一个标准的请求(Making a Standard Request)

学习如何使用 Volley 的 out-of-the-box(可直接使用、无需配置)请求类型(原始字符串、图片和 JSON)来发送一个请求。

实现自定义的请求(Implementing a Custom Request)

学习如何实现一个自定义的请求。