您的位置:首页 > 其它

Volley的简单使用,和简单二次封装

2016-03-22 17:17 375 查看
Volley作为Android谷歌使用的第三方网略请求框架,在网略数据请求时有很多优势:
1.通信更快,更简单,开发效率会得到很大提升,开发出来的网略模式性能比较稳定
2.Get、Post网略请求及图片的网络图片的高效率异步请求
3.可以对网略请求进行优先级排序
4.网略请求的缓存:当用户的网略不太好时,Volley自动对网略数据请求做缓存处理
上一段代码简单展示一下
先封装MyAppcaltion类 获得全局的RequestQueue
public classMyApplication extends Application {

private static RequestQueuerequestQueue;

private static MyApplicationapplication;

@Override

public void onCreate() {

// TODO Auto-generated methodstub

super.onCreate();

application = this;

requestQueue =Volley.newRequestQueue(this);

}

public static MyApplicationgetInstance() {

// TODO Auto-generated methodstub

return application;

}

public static RequestQueuegetRequestQueue(){

return requestQueue;

}

}
Get请求:在Activity 或者Fragment的代码使用如下
StringRequestrequest = new StringRequest(Method.GET,url, new Listener<String>() {

@Override

public voidonResponse(String arg0) {

// arg0请求成功的数据

}

}, new ErrorListener() {

@Override

public voidonErrorResponse(VolleyError error) {

}

});
//需要设置一个标志,在onStop()生命周期里回收

request.setTag("tag");
MyApplication.getRequestQueue().add(request);
在onStop()生命周期里回收StringRequest,很多开发者不重视这个,造成手机内存一直在消耗,
手机电量也一直在消耗,APP性能因此受损,所以最好回收一下

protected void onStop() {

// TODO Auto-generated methodstub

super.onStop();

MyApplication.getRequestQueue().cancelAll("tag");

}
post请求
StringRequest request = newStringRequest(Method.POST, url, new Listener<String>() {

@Override

public voidonResponse(String arg0) {

// TODOAuto-generated method stub

}

}, newErrorListener() {

@Override

public voidonErrorResponse(VolleyError error) {

// TODOAuto-generated method stub

}

}){

@Override

protected Map<String,String> getParams()

throwsAuthFailureError {

// TODOAuto-generated method stub

Map<String,String> params = new HashMap<String, String>();
//post请求的参数
params.put("xxx","yyy");
returnparams;

}

};
//同Get请求一样,需要设置一个标志,在onStop()生命周期里回收

request.setTag("tag");
MyApplication.getRequestQueue().add(request);
封装Volley 请求
public classVolleyRequest {

public static StringRequeststringRequest;

/**

* 封装Volley get请求

* @param mContext

* @param url

* @param tag

* @param vif

*/

public static void ReuestGet(ContextmContext,String url,String tag,VolleyInterface vif){

MyApplication.getRequestQueue().cancelAll(tag);

stringRequest = newStringRequest(url, vif.getListener(), vif.getErrorListener());

stringRequest.setTag(tag);

MyApplication.getRequestQueue().add(stringRequest);

MyApplication.getRequestQueue().start();

}

/**

* 封装Volley post请求

* @param mContext

* @param url

* @param tag

* @param parmas

* @param vif

*/

public static voidReuestPost(Context mContext,String url,String tag,

finalMap<String,String> params,VolleyInterface vif){

//先回收一下网略请求StringRequest

MyApplication.getRequestQueue().cancelAll(tag);

stringRequest = newStringRequest(url, vif.getListener(),

vif.getErrorListener()){

@Override

protected Map<String,String> getParams() throws AuthFailureError {

// TODOAuto-generated method stub

return params;

}

};

stringRequest.setTag(tag);

MyApplication.getRequestQueue().add(stringRequest);

MyApplication.getRequestQueue().start();

}

}
封装抽象类VolleyInterface
public abstractclass VolleyInterface {

public Context context;

public static Listener<String>listener;

public static ErrorListener errorListener;

public VolleyInterface(Contextcontext,Listener<String> listener,ErrorListener errorListener) {

// TODO Auto-generatedconstructor stub

this.context = context;

this.listener = listener;

this.errorListener =errorListener;

}

public Listener<String>getListener(){

listener = newListener<String>() {

@Override

public voidonResponse(String arg0) {

// TODOAuto-generated method stub

onMySuccess(arg0);

}

};

return listener;

}

public ErrorListenergetErrorListener(){

errorListener = newErrorListener() {

@Override

public voidonErrorResponse(VolleyError arg0) {

// TODOAuto-generated method stub

onMyError(arg0);

}

};

return errorListener;

}

public abstract voidonMySuccess(String result);

public abstract voidonMyError(VolleyError error);

}
在Activity或者Fragment中数据请求
VolleyRequest.ReuestGet(this,url,"tag", newVolleyInterface(this,VolleyInterface.listener,VolleyInterface.errorListener) {

@Override

public voidonMySuccess(String arg0) {

// TODOAuto-generated method stub

}

@Override

public voidonMyError(VolleyError error) {

// TODOAuto-generated method stub

}

});

这样就特别方便,下一篇文章介绍Volley的图片加载,敬请期待,
如果好的建议、意见,请与本人的QQ2428566234联系,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: