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联系,谢谢
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联系,谢谢
相关文章推荐
- opencv 如何提取旋转矩形的ROI
- 2016微信抢红包助手及源码
- Realsense(二)实现pxcimage到mat转化的另一种代码方案
- 【机器学习实战】K-邻近算法
- JavaScript基础入门
- Css3之基础-8 Css 浮动(定位,浮动定位)
- python:使用迭代方法生产随机码
- 回归基础 分析多线程的三种实现方式
- [LeetCode] Reverse Words in a String II(in-place 算法)
- android的Shader
- 结对编程感想
- 十年程序之路
- docker 私有仓库镜像的存储位置
- Theano(2) RNN训练词向量
- CGContextRestoreGState() 的作用
- CSDN-markdown语法之如何使用LaTeX语法编写数学公式
- android之自定义UncaughtExceptionHandler类来处理未捕获异常
- eclipse 3字节的UTF-8序列的字节2无效
- 一行命令解决 xcode升级新版本插件失效问题
- poj-3660-cows contest(不懂待定)