Volley的简单使用,和简单二次封装
来源:互联网 发布:农业科技网络书屋 官网 编辑:程序博客网 时间:2024/05/17 04:16
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联系,谢谢
- Volley的简单使用,和简单二次封装
- Volley简单二次封装代码
- Volley的简单的二次回调封装
- Volley与Activity生命周期联动及简单的二次封装
- 【Android应用】AS Volley网络访问 简单的二次封装
- Retrofit和OkHttp简单的二次封装
- android开发,volley的二次封装和使用
- Volley网络请求的简单封装使用
- Volley的使用(三) 简单封装
- Volley的二次封装
- Volley的二次封装
- AFN的简单二次封装
- Vollery的简单二次封装
- okhttp简单的二次封装
- retrofit的简单二次封装
- Okhttp的简单二次封装
- Okhttp简单的二次封装
- 【转】Android通知的使用及简单二次封装
- 批处理备份SQL Server数据库~
- opencv 如何提取旋转矩形的ROI
- android中view的生命周期
- listview如何包含不同类型的Item
- HDU 1312 Red and Black
- Volley的简单使用,和简单二次封装
- 2016微信抢红包助手及源码
- JAVA的Random类(转)
- 利用js、jQuery和css实现环形进度条组件封装
- 基于tiny4412的Linux内核移植 -- DM9621NP网卡驱动移植(四)
- 25.NSURLSession的使用
- Nginx动静分离经典案例配置
- 小汪Hibernate 学习之一 Hibernate 小例子
- HDU 4505:小Q系列故事——电梯里的爱情【模拟】