13年,Google大会上的新技术:Volley( 万箭齐发 ) 使得在android上改变网络请求的高效率得以实现。

下面,我就向大家简单介绍下在实际项目中如何使用Volley进行网络数据的请求。

在android中使用Volley很简单,大概可以分为以下几步:

(1)下载Volley.jar的最新架包,并将其build到项目中。

(2)使用Volley请求数据之前,需要一个请求队列来维护请求线程之间的关系以及将结果发送给主线程。这时我们需要在Application中创建请求队列,代码入选:

/**
 * 请求队列
 * @author songxiaoliang
 *
 */
public class VolleyApplication extends Application{


public static RequestQueue requestQueue;

@Override
public void onCreate() {
super.onCreate();
requestQueue = Volley.newRequestQueue(getApplicationContext());
}

@Override
public void onTerminate() {
super.onTerminate();
requestQueue.stop();
}

public static RequestQueue getRequestQueue(){
return requestQueue;
}
}


(3)创建好队列后,我们对请求的回调函数进行二次封装,此时我们用一个抽象类来封装请求成功、失败的回调该函数:

/**
 * 请求回调函数的二次封装
 * @author songxiaoliang
 *
 */
public abstract class VolleyInterface {


public Context mContext;
public static Listener listener;
public static ErrorListener error;

public VolleyInterface(Context mContext,Listener listener,ErrorListener error){
this.mContext = mContext;
this.listener = listener;
this.error = error;
}

public  Listener loadingListener(){

listener = new Listener() {
@Override
public void onResponse(String arg0) {
succees(arg0);
}
};

return listener;
}

public ErrorListener errorListener(){
error = new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
error(arg0);

}
};
return error;
}

public abstract void  succees(String args);
public abstract void error(VolleyError args);

}

(4)创建请求类,在请求类中,我们封装了两个方法:get请求、post请求:

/**
 * 请求工具类
 * @author songxiaoliang
 *
 */
public class VolleyUtil {


//请求对象
private static StringRequest request;

/**
* get请求
* @param url
* @param tag
* @param mContext
* @param vif
*/
public static void requestGet(String url,String tag,Context mContext,VolleyInterface vif){

VolleyApplication.getRequestQueue().cancelAll(tag);
request = new StringRequest(Method.GET,url, vif.loadingListener(), vif.errorListener());
request.setTag(tag);
VolleyApplication.getRequestQueue().add(request);
VolleyApplication.getRequestQueue().start();
}
/**
* post请求
* @param url
* @param tag
* @param mContext
* @param vif
* @param params
*/
public static void requestPost(String url,String tag,Context mContext,VolleyInterface vif,final Map params){

VolleyApplication.getRequestQueue().cancelAll(tag);
request = new StringRequest(Method.POST,url, vif.loadingListener(), vif.errorListener()){
@Override
protected Map getParams() throws AuthFailureError {
return params;
}
};
request.setTag(tag);
VolleyApplication.getRequestQueue().add(request);
VolleyApplication.getRequestQueue().start();
}
}

(5)此时我们就可以在项目中使用VolleyUtil来发送网络请求啦!

/**
 * MainActivity
 * @author songxiaoliang
 *
 */
public class MainActivity extends Activity {




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
volleyGet();
}


/**
* 请求(get)聚合数据
*/
private void volleyGet() {

String url = "http://op.juhe.cn/onebox/movie/video?key=01ee25e120c69d371cce3122c0bb58a1&q=%E5%BA%B7%E7%86%99%E7%8E%8B%E6%9C%9D";
String tag = "abc";
//发送请求
VolleyUtil.requestGet(url, tag, this, new VolleyInterface(this,VolleyInterface.listener,VolleyInterface.error) {

@Override
public void succees(String result) {
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();

}

@Override
public void error(VolleyError args) {
Toast.makeText(MainActivity.this, "出错了", Toast.LENGTH_SHORT).show();

}
});
}
}


OK,到此为止,使用Volley的过程就是这样,是不是很简单,希望对你有所帮助!

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. Android开发实践:JNI层线程回调Java函数示例
  4. Android的线程池:ExecutorService和Executors
  5. 细数Android原生工程接入EasyAR-SurfaceTracking遇到的坑
  6. Android(安卓)Handler详解
  7. 【读书笔记《Android游戏编程之从零开始》】8.Android(安卓)游戏
  8. android studio 中使用gradle.properties
  9. Android运行时异常“Binary XML file line # : Error inflating

随机推荐

  1. 移动5年 Android生态系统的演进
  2. Android,谁动了我的内存(1)
  3. Android之在GEC210板上点灯。
  4. 《Android技术内幕:系统卷》
  5. Android(安卓)Touch Calibration解决方案
  6. Android的消息循环机制 Looper Handler类
  7. Android零基础入门第8节:HelloWorld,我的第
  8. Android(安卓)UI Operation in Thread
  9. 开发规范:《阿里巴巴Android开发手册》之
  10. Android上在两个Activity之间传递Bitmap