1、Volley是什么?
Volley是Google官方在2013 Android IO大会上推出的新网络通信框架,
一个使得android网络通信更加容易并且迅速的HTTP库。它并且可以通过开放的AOSP仓库进行使用。
它有以下特性:
(1)自动调度网络请求;
(2)支持多并发的网络连接;
(3)磁盘和内存响应缓存使用标准HTTP缓存特性;
(4)支持请求优先级;
(5)取消请求API。你可以取消一个请求,或者你可以设定块或取消的请求范围;
(6)易于定制,例如,重试和补偿;
(7)强大的排序,便于正确填充UI的从网络获取而来的异步数据;
(8)有调试和跟踪工具
它就是一个让你更快捷更高效进行网络通信的android网络工具库,它适用于小数据的交换。对于大文件或者流媒体,它是不适合的。而对于大文件的下载操作,请考虑用其他的库,比如DownloadManager。
Volley is notsuitable for large download or streaming operations, since Volley holds allresponses in memory during parsing. For large download operations, considerusing an alternative like DownloadManager.
如果你安装有git,那么可以通过下面命令来获得 Volley的源码:
git clonehttps://android.googlesource.com/platform/frameworks/volley
二、如何使用Volley?
1、使用Volley发送一个简单的请求:
Volley提供了一个方法来根据一个URL发起一个HTTP请求。只需要做以下5个步骤:
(1)下载volley.jar包,并加入到android工程的libs中;
(2)配置上网的权限;
<uses-permission android:name="android.permission.INTERNET" >
(3)通过Volley的静态方法新建一个请求队列对象RequestQueue,这里解释下什么是RequestQueue,从它的源码可以大概了解到它是拥有好几个queue成员变量的对象,其中包括缓存队列和网络队列,都是采用优先级阻塞队列。因此,我们可以理解它为一个用来处理我们所提出所有网络请求的队列。
来自 <https://android.googlesource.com/platform/frameworks/volley/+/1a39583f0ee06329f7918ed9a4c7d0e7cd342917/src/main/java/com/android/volley/RequestQueue.java>
|
RequestQueue queue = Volley.newRequestQueue(this); |
(4)提供一个URL,new一个StringRequest 对象;所谓StringRequest对象,在它源码注释可知,它就一个是利用给定的URL作为一个String去检索响应内容的封装请求对象。
来自 <https://android.googlesource.com/platform/frameworks/volley/+/1a39583f0ee06329f7918ed9a4c7d0e7cd342917/src/main/java/com/android/volley/toolbox/StringRequest.java>
|
(5)并把它加入到RequestQueue队列中。
queue.add(stringRequest); |
官方所给出的提示DEMO如下:
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);
来自 <http://developer.android.com/training/volley/simple.html>
|
2、使用JSON传递数据:JsonRequest
(未完待续)