AOSP 仓库获取到Volley 。
Volley 有如下的优点:
自动调度网络请求。高并发网络连接。通过标准的HTTP的cache coherence(高速缓存一致性)使得磁盘与内存缓存不可见(Transparent)。支持指定请求的优先级。
支持取消已经发出的请求。你可以取消单个请求,或者指定取消请求队列中的一个区域。
框架容易被定制,例如,定制重试或者回退功能。
强大的指令(Strong ordering)可以使得异步加载网络数据并显示到UI的操作更加简单。包含了Debugging与tracing工具。
Volley擅长执行用来显示UI的RPC操作, 例如获取搜索结果的数据。它轻松的整合了任何协议,并输出操作结果的数据,可
以是raw strings,也可以是images,或者是JSON。通过提供内置你可能使用到得功能,Volley可以使得你免去重复编写样板
代码,使你可以把关注点放在你的app的功能逻辑上。
Volley不适合用来下载大的数据文件。因为Volley会在解析的过程中保留持有所有的响应数据在内存中。对于下载大量的数据操作,请考虑使用DownloadManager。
Volley框架的核心代码是托管在AOSP仓库的 frameworks/volley 中,相关的工具放在 toolbox 下。把Volley添加到你的项目中的最简便的方法是Clone仓库然后把它设置为一个library project:
通过下面的命令来Clone仓库:git clone https://android.googlesource.com/platform/frameworks/volley
1、发送简单的网络请求(Sending a Simple Request)
使用Volley的方式是,你通过创建一个 RequestQueue 并传递 Request 对象给它。RequestQueue管理工作线程用来执行网络操
作,从Cache中读取与写入数据,以及解析Http的响应内容。 Requests 执行raw responses的解析,Volley会把响应的数据分发给主线程。
(1) 为了使用Volley,你必须添加 android.permission.INTERNET 权限到你的manifest文件中。没有这个权限,你的app将无法访问网络。
(2)Volley提供了一个简便的方法: Volley.newRequestQueue 用来为你建立一个 RequestQueue ,使用默认值,并启动这个队列。例如:
final TextView mTextView = (TextView) findViewById(R.id.text);
...
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener() {
@Override
public void onResponse(String response) {
// Display the first 500 characters of the response string.
mTextView.setText("Response is: "+ response.substring(0,500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn't work!");
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
Volley总是把解析过后的数据返回到主线程中。在主线程中更加合适使用接收到到的数据用来操作UI控件,这样你可以在响
应的handler中轻松的修改UI,但是对于库提供的一些其他方法是有些特殊的,例如与取消有关的。
关于如何创建你自己的请求队列,不要使用Volley.newRequestQueue方法,请查看建立一个请求队列Setting Up a
RequestQueue。
为了发送一个请求,你只需要构造一个请求并通过 add() 方法添加到 RequestQueue 中。一旦你添加了这个请求,它会通过队
列,得到处理,然后得到原始的响应数据并返回。