本人初学,如有纰缪,望指正~
Volley是Google在2003年的I/O大会上推出的通信框架,结合了AsyncHttpClient和Universal-Image-Loader的优点——简化了http的使用 + 异步加载图片的神奇能力。Android中的Http实现主要有HttpUrlConnection和HttpClient两种,关于二者的选择Google在Blog中表示推荐在姜饼小人(API level = 9)及以上的版本中使用Java的HttpUrlConnection而在之前的版本使用Apache的HttpClient,这在Volley这个框架中也有明确的体现。
获取Volley
git clone https://android.googlesource.com/platform/frameworks/volley
把它编译成jar文件就可以加入libs了
简单的请求(以StringRequest为例)
Http的通信最主要的部分应该就是发出请求和接收响应了,所以Volley的比较核心的一个类就是RequestQueue,一个请求队列。它负责管理工作线程,读写缓存,和解析、分发响应(具体操作还是由具体的类实现),即将发出的Http请求都会首先聚集在这里等待工作线程来实现请求。RequestQueue可以被看成一艘载满Http请求的航空母舰,而工作线程就是弹射器喽。
所以按照航母起飞飞机的步骤,我们可以猜到利用Volley进行Http通信的简单步骤:
1.获取RequestQueue(得到一艘航母,可以是自己造的,也可以是委托别人造的,下面会提到)
2.实例化一个Request(得到一架飞机,你也知道飞机又很多类型啦)
3.将Request加入RequestQueue,等待工作线程将其发送出去(把飞机从机库升上起飞甲板,等待弹射器把它扔出去)
起飞侦察机-发出GET请求
按照上面的步骤,第一步就是建立一个请求队列,最简单的方法就是用Volley.newRequestQueue(),这是一个特别方便的静态方法,替我们默认实现了所有需要的东西(网络、缓存等,这些在Volley中都有默认实现),它会返回一个已经开始运行的RequestQueue(相当于别人帮忙造了艘航母)。之后我们需要的只是设置好请求的响应监听接口,把请求加入到这个队列中就可以等着响应数据来敲门了。下面是Google文档中的示例代码:
1 //初始化一个请求队列 2 RequestQueue queue = Volley.newRequestQueue(this); 3 String url ="http://www.google.com"; 4 5 //根据给定的URL新建一个请求 6 StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 7 new Response.Listener() { 8 @Override 9 public void onResponse(String response) { 10 // 在这里尽情蹂躏String类型的响应。 11 } 12 }, new Response.ErrorListener() { 13 @Override 14 public void onErrorResponse(VolleyError error) { 15 // 出错了怎么办?凉拌!并且在这里拌。 16 } 17 }); 18 // 把这个请求加入请求队列 19 queue.add(stringRequest);