参考链接:
Volley-Demo下载地址:
https://github.com/android-cn/android-open-project-demo/tree/master/volley-demo
1. 导入Eclipse
将volley-demo(.\android-open-project-demo-master\volley-demo)导入eclipse后:Eclipse->File->Import->ExistingAndroid Code Into Workspace。导入后是一个HomeActivity,且会出现一堆R cannot be resolved to a variable的错误,重启一下Eclipse即可
2. 学习volley-demo
2.1 使用StringRequest
以下是StringRequest的发送按钮的监听器代码:
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (StringUtil.isEmpty(etUrl.getText().toString())) {
ToastUtil.showToast(getActivity(), "请输入请求地址");
return;
}
//请求之前,先取消之前的请求(取消还没有进行完的请求)
VolleyUtil.getQueue(getActivity()).cancelAll(this);
tvResult.setText("");
StringRequest request = new StringRequest(StringUtil.preUrl(etUrl.getText().toString().trim()),
new Listener<String>() {
@Override
public void onResponse(String response) {
tvResult.setText(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
ToastUtil.showToast(getActivity(), getResources().getString(R.string.request_fail_text));
}
});
//请求加上Tag,用于取消请求
request.setTag(this);
VolleyUtil.getQueue(getActivity()).add(request);
}
});
从代码中可以看出其主要是新建了一个StringRequest,然后通过add函数加入了请求队列RequestQueue中。
接下来看StringRequest的构造函数:
public class StringRequest extends Request<String> {
。。。
public StringRequest(String url, Listener<String> listener, ErrorListener errorListener);
。。。
}
其中Request是一个抽象类,Listener为接口。Request有构造函数:
public Request(int method, String url, Response.ErrorListener listener);
public Request(String url, Response.ErrorListener listener) {
this(Method.DEPRECATED_GET_OR_POST, url, listener);
}
Listener中有函数:
public voidonResponse(T response);
当系统将StringRequest处理完成后会回调该函数。本demo中系统回调onResponse,将收到的数据显示在TextView上。
3. 小结
使用Volley很简单,过程可分为两步:
- 建立请求队列RequestQueue rq = new Volley.newRequestQueue()
- 新建请求XXRequest,然后将请求加入队列rq中:rq.add(XXRequest);
今天先了解Volley的初步使用,下次将对Volley源码进行详细分析