volley框架简介
Volley是一个由Google官方推出的网络通信库,它使得Android进行网络请求时更加方便、快速、健壮,同时对网络图片加载也提供了良好的支持。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
volley框架主要对象及方法
1.用单例模式获取RequestQueue对象
public class MySingleton {
private static MySingleton mInstance;
private RequestQueue mRequestQueue;
private static Context mCtx;
private MySingleton(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();
}
/**
* 获取对象静态方法
*/
public static synchronized MySingleton getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySingleton(context);
}
return mInstance;
}
/**
* 获取volley对象
*/
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}
}
2.在java代码模块获取RequestQueue对象并使用
2.1.获取对象
mRequestQueue=MySingleton.getInstance(this).getRequestQueue();
2.2.使用 这里以StringRequest为例(get)
private void volleyGetMethod(final Stirng url) {
StringRequest request = new StringRequest(Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
parseObject(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loadingtv.setVisibility(View.VISIBLE);
layout.setVisibility(View.GONE);
loadingtv.setText(StringUtils.getFailureString());
}
});
}
2.这里以StringRequest为例(post)
private void volleyPostMethod(final String url){
StringRequest request=new StringRequest(Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
parseImgObject(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
toast.showToast(StringUtils.getFailureString());
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params=new HashMap<String, String>();
params.put("key", uid);
params.put("images", stream);
return params;
}
};
}
3.将XXRequest添加到RequestQueue队列中
mRequestQueue.add(request);
4.销毁RequestQueue
if(mRequestQueue!=null){
mRequestQueue.cancelAll(this);
}
5.其他XXRequest
JsonObjectRequest:返回JSONObject对象。
JsonArrayRequest:返回JsonArray对象。
StringRequest:返回String对象。
ImageRequest显示图片。
6.volley框架总结
Volley可以直接在UI线程中请求数据更新UI,不必在新开子线程请求数据。