Volley是Google I/O 2013上Google官方发布的一款Android平台上的网络通信库
Volley特点:
1.能使网络通信更快更简单
2.GET ,POST网络请求以及图象的高效异步处理请求
3.可以对网络请求进行排序的优先级管理
4.网络请求缓存
5.多级别取消请求
6.和Activity生命周期的联动(Activity结束同时取消所有的网络请求)使用Volley可以简化一些网络通信的开发,当然Volley不适合大数据(large payloads)和流媒体的网络请求,列如上百兆的文件,视屏下载。
public class MyApplication extends Application {
public static RequestQueue queue;
@Override
public void onCreate() {
super.onCreate();
queue = Volley.newRequestQueue(getApplicationContext());
}
/**
* 用于获取全局的请求队列
* @return
*/
public static RequestQueue getHttpQueue(){
return queue;
}
}
Volley的GET和Post用法
public class MainActivity extends AppCompatActivity {
String url = "https://www.baidu.com/baidu?";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Volley_Get();
Volley_Post();
}
private void Volley_Post() {
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override//请求成功
public void onResponse(String response) {
Log.e("post",response);
}
}, new Response.ErrorListener() {
@Override//请求成功
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> map = new HashMap<>();
map.put("tn","monline_3_dg");
map.put("ie","utf-8");
map.put("wd","post%E8%AF%B7%E6%B1%82");
return map;
}
};
request.setTag("abc");
MyApplication.getHttpQueue().add(request);
}
private void Volley_Get() {
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override//请求成功
public void onResponse(String response) {
Log.e("GET",response);
}
}, new Response.ErrorListener() {
@Override//请求失败
public void onErrorResponse(VolleyError error) {
}
});
request.setTag("abc");
//添加到请求队列
MyApplication.getHttpQueue().add(request);
}
@Override
protected void onStop() {
super.onStop();
//根据Tag取消请求
MyApplication.getHttpQueue().cancelAll("abc");
}
}