[关闭]
@jimbo 2015-09-08T22:19:43.000000Z 字数 1634 阅读 727

volley使用及其源码学习(一)

android volley


1.volley简介

我们平时在开发Android应用的时候都不可避免的都要需要用到网络技术,而多数情况下应用程序都会时候http协议来发送和接收网络数据。Android系统中主要提供了两种方式进行http通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中都有这两个类的身影,使用率非常高。
不过HttpURLConnection和httpClient的用法还是稍微有些复杂的,如果不进行适当的封装的话,很容易就会出不少的重复代码。于是乎,一些Android网络通信框架也就应运而生,比如说AsyncHttpClient,他把http所有的通信细节全部封装在内部,我们只需要简单的几行代码就可以完成通信操作了。在比如Universal-Image-Loader,它使得在界面上显示网络图片的操作变得极度简单,开发就不用关心如何从网络上获取图片,也不关心开启线程,回收图片资源等细节,Universal-Image-Loader已经把一切都做好了。
Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化,于是在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

2.下载volley

  1. git clone http://android.googlesource.com/platform/frameworks/volley

3.StringRequest的用法

volley的使用方法很简单,要想发送一个request请求,首先必须获取一个RequestQueue对象,可以调用如下方法获取到:

  1. RequestQueue mQueue = Volley.newRequestQueue(context);

RequestQueue是一个请求队列对象,可以缓存所有的http请求,然后按照一定的算法并发的发出这些请求。RequestQueue内部设计非常适合高并发,因此我们不必为http请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上一个需要和网络交互的activity中创建一个RequestQueue就足够了。
接下来为了发送一条http请求,我们还需要创建一个StringRequest对象:

  1. private void volleyString() {
  2. // 这是一个get方法
  3. // 如果要使用Post方法的话就要使用它的四个函数的构造方法,
  4. // 在第一个参数的位置上指定请求方式。
  5. StringRequest request = new StringRequest("http://www.baidu.com",
  6. new Response.Listener<String>() {
  7. @Override
  8. public void onResponse(String response) {
  9. // TODO Auto-generated method stub
  10. textView.setText(response);
  11. }
  12. }, new Response.ErrorListener() {
  13. @Override
  14. public void onErrorResponse(VolleyError error) {
  15. // TODO Auto-generated method stub
  16. textView.setText(error.toString());
  17. }
  18. });
  19. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注