原文:http://developer.android.com/training/volley/index.html
Volley是一个HTTP库,它能够帮助Android apps更方便的执行网络操作,最重要的是,它更快速高效。
Volley 有如下的优点:
- 自动调度网络请求。
- 高并发网络连接。
- 通过标准的HTTP的cache coherence(高速缓存一致性)使得磁盘与内存缓存不可见(Transparent)。
- 支持指定请求的优先级。
- 支持取消已经发出的请求。你可以取消单个请求,或者指定取消请求队列中的一个区域。
- 框架容易被定制,例如,定制重试或者回退功能。
- 强大的指令(Strong ordering)可以使得异步加载网络数据并显示到UI的操作更加简单。
- 包含了Debugging与tracing工具。
上传volley.jar 下载链接:
点击打开链接
使用Volley的方式是,你通过创建一个
RequestQueue
并传递
Request
对象给它。RequestQueue管理用来执行网络操作的工作线程,从Cache中读写数据,并解析Http的响应内容。
Requests
执行raw responses的解析,Volley会把响应的数据分发给主线程。
下图演示了一个请求的生命周期:
下面使用Volley 编写一个发送简单网络请求的小demo:
贴出MainActivity代码(xml自已写吧):
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
//使用默认方式建立请求队列
RequestQueue queue = Volley.newRequestQueue(this);
String url = "https://www.baidu.com";
//请求内容
StringRequest stringRequest = new StringRequest(Request.Method.GET,
url, new Response.Listener<String>() {
//请求完成后的回调函数,将请求的内容返回。
@Override
public void onResponse(String arg0) {
tv.setText("Response is" + arg0);
}
}, new Response.ErrorListener() {
//失败
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
tv.setText("ERROR!");
}
});
//将请求消息,加入到请求队列中,后台处理队列中的请求。
queue.add(stringRequest);
}
}
运行效果:
使用Volley 发送一个简单网络请求的小demo: