Android 浅析 Volley (一) 使用


前言

Linus Benedict Torvalds : RTFSC – Read The Fucking Source Code

概括

Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster.
Volley excels at RPC-type operations used to populate a UI, such as fetching a page of search results as structured data. It integrates easily with any protocol and comes out of the box with support for raw strings, images, and JSON. By providing built-in support for the features you need, Volley frees you from writing boilerplate code and allows you to concentrate on the logic that is specific to your app.

使用

Http请求

Step 1.创建RequestQueue队列

RequestQueue mQueue = Volley.newRequestQueue(this);
通过newRequestQueue创建一个新的RequestQueue队列。

Step 2.创建StringRequest对象

StringRequest stringRequest = new StringRequest(    "http://www.baidu.com",    new Response.Listener() {        @Override        public void onResponse(String response) {            Log.d("TAG", response);        }    }, new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            Log.e("TAG", error.getMessage(), error);        }    });

这里可以看到StringRequest有三个默认参数,第一个是目标的Url,第二个是设置一个回调,第三个是监听错误回调的。

Step 3.将quest对象添加到队列里

mQueue.add(stringRequest);
最后就是将StringRequest对象往StringRequest里面扔就行了。

图片请求

Step 1.创建RequestQueue对象

RequestQueue mQueue = Volley.newRequestQueue(this);
通过newRequestQueue创建一个新的RequestQueue队列。

Step 2.创建ImageRequest对象

mImageView = (ImageView) findViewById(R.id.imageView);ImageRequest imageRequest = new ImageRequest(    "http://app.sjk.ijinshan.com/market/img/zs/2300841/20150805140347461.png",    new Response.Listener() {        @Override        public void onResponse(Bitmap response) {            mImageView.setImageBitmap(response);        }    }, 0, 0,     Config.RGB_565, new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            mImageView.setImageResource(R.drawable.default_image);        }    });

ImageRequest的构造函数接收六个参数,第一个参数就是图片的URL地址。第二个参数是图片请求成功的回调,这里我们把返回的Bitmap参数设置到ImageView中。第三第四个参数分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩。第五个参数用于指定图片的颜色属性,Bitmap.Config下的几个常量都可以在这里使用,其中ARGB_8888可以展示最好的颜色属性,每个图片像素占据4个字节的大小,而RGB_565则表示每个图片像素占据2个字节大小。第六个参数是图片请求失败的回调,这里我们当请求失败时在ImageView中显示一张默认图片。

Step 3.将quest对象添加到队列里

mQueue.add(stringRequest);
最后就是将StringRequest对象往StringRequest里面扔就行了。

自定义Quest请求

自定义类

自定义的请求其实很简单,首先是继承父类Request,然后重载其中两个函数parseNetworkResponse(NetworkResponse response),deliverResponse(XmlPullParser response)。就可以像用StringResponse那样去使用了。

总结

Volley总体来说非常好用和方便,封装好了各种网络请求,特别是底层支持对开发者来说免除了很多烦恼,还可以定制自己的Response。

更多相关文章

  1. Android(安卓)通过软引用实现图片缓存,防止内存溢出[转]
  2. Android中调用摄像头拍照保存,并在相册中选择图片显示
  3. Android的消息机制(异步处理)
  4. 2014.01.13(2) ——— android listview fastScrollEnabled
  5. 图片的ScaleType详解 ImageView的属性android:scaleType,
  6. 通过 按钮 bundle 传过来 变换Q币图片
  7. Android(安卓)人脸识别
  8. android官网demo之异步加载图片
  9. [Android(安卓)UI] ActionBar 自定义属性

随机推荐

  1. Android webview中拦截超链接
  2. cryptfs-password-manager, Android设备
  3. Android(安卓)SD卡中压缩包解压(ZIP文件)
  4. Android来电拦截的实现方法
  5. Android 生成图标的有力工具 Android Ass
  6. android 读取根目录下的文件或文件夹
  7. Android在启动adb时失败解决方案
  8. 【Android】获取控件的宽和高
  9. [置顶] 找到一个在Android上创建阻塞式模
  10. Android横竖屏的写法、及savedInstanceSt