Volley使用(一)

来源:互联网 发布:神速百度快速排名优化 编辑:程序博客网 时间:2024/06/06 15:42

 相信大家很多做安卓开发的都知道Volley这个框架  本人做了差不多7个项目 有四个用的这个框架   对它还是比较钟爱的  好下面就来详细介绍一下  整个Volley框架  我分为三部分去讲解  今天想进行一些基础的讲解 

1.什么是Volley

   Volley是Google I/O 2013上推出的 是android上的网络通讯库

下面看一张谷歌官方的图片


这张图很直观的看出

Volley特别适合用于网络交互频繁  但是数据量不大的情况 如果你要下载一些大文件 使用Volley框架是比较糟糕的选择 Volley不适合大数据量的交互

Volley把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片

2.Volley有哪些功能

   a.数据异步请求;

   b.网络请求的排序

   c.网络请求的优先级处理

   d.缓存(volley内部会创建一个缓存线程)

   e.多级别取消请求

   f.和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

3.volley      jar包

   我们可以百度上面搜出一大堆jar包 这个我不说了  

4.Volley的用法(StringRequest)

   最基本的HTTP通信,即发起一条HTTP请求,

首先我们需要得到一个RequestQueue

RequestQueue MyRequestQueue = Volley.newRequestQueue(context);  

这个MyRequestQueue 是一个请求队列对象  内部的设计非常适合高并发的  因此我们只需要创建一个RequestQueue就可以了 我们可以将这行代码放到Application里面去初始化(这里我们只是说一下用法 所以我就直接放到Activity中了)

接下来我们看一下

  1. StringRequest stringRequest = new StringRequest("http://www.baidu.com",  
  2.                         new Response.Listener<String>() {  
  3.                             @Override  
  4.                             public void onResponse(String response) {  
  5.                                 Log.d("TAG", response);  
  6.                             }  
  7.                         }, new Response.ErrorListener() {  
  8.                             @Override  
  9.                             public void onErrorResponse(VolleyError error) {  
  10.                                 Log.e("TAG", error.getMessage(), error);  
  11.                             }  
  12.                         });  

这段代码中两个回调方法 大家一应该都明白这里面的意思 这里需要三个参数 第一个URl不多说 第二个请求成功的回调方法 第三个 请求失败的回调方法

最后我们需要把这个StringRequest  add到我们刚才创建的请求队列中

MyRequestQueue.add(stringRequest)

注:StringRequest只是Request的一种还有很多(ImageRequest,jsonRequest等等 还可以使用自定义的Request这个后面我们详细讲解一下)

上面就是一个简单的Volley的get请求  有人问了 那post请求呢

好接着看

StringRequest提供了一个有四个参数的方法

StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener); 

我们看第一个参数  大家肯定明白了 对  就是我们选择get  post的地方 

我们只是这里可以设置请求方法 但是并没有我们可以提交参数的地方 那怎么办呢   我当时也纳闷 最后看了大神的博客才知道(引用大神的一段话)

       StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了

  1. StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {  
  2.     @Override  
  3.     protected Map<String, String> getParams() throws AuthFailureError {  
  4.         Map<String, String> map = new HashMap<String, String>();  
  5.         map.put("params1""value1");  
  6.         map.put("params2""value2");  
  7.         return map;  
  8.     }  
  9. };  

这个Request我们提了一句   我们还可以使用自己定制的Request这个后面讲

  总结

 Volley请求其实非常简单

1.创建RequestQueue

2.创建StringRequest

3.将StringRequest添加到请求队列中

我们重点强调的是2 StringRequest  还有ImageRequest  JsonRequest等 其他的请求步骤跟这个一样 大家要学会举一反三 

有哪些写的不对的地方请大家及时反映














0 0
原创粉丝点击