android - volley的使用
发表于:,更新于:,By Sally
Android 网络通信框架 Volley
几个特点
支持
get
post
网络图片
等的高效异步处理请求可以对请求进行排序
支持网络请求缓存
支持多级别取消请求
与activity生命周期联动
不适合数据的上传和下载(如果需要上传和下载,选用别的,eg:okhttp)
功能
高效的get post方式的数据请求交互
网络图片的加载和缓存
请求包括以下几种对象
StringRequest : 不清楚数据的返回类型时,使用stringrequest
JsonObjectRequest : 返回的是json对象时,使用jsonobjectrequest
JsonArrayRequest : 返回的是json数组时,使用jsonarrayrequest
volley 的使用
先声明请求队列 RequestQueue
- 所有request 请求都是放到这个队列进行处理,所以我们将这个队列声明在Application里,记得在manifest中配置一下myapplication
1 | public class MyApplication extends Application { |
字符数据处理 : StringRequest
get 方式
- 这里使用了4个参数的方法:请求方式,请求地址,请求成功回调,请求失败回调
1 | private void volley_get_string() { |
post 方式
- 参数:请求方式,请求地址,请求成功回调,请求失败回调,重写getParams()方法获得请求参数。
1 | private void volley_post_string() { |
JSON对象数据处理 : JsonObject
get 方法
1 | private void volley_get_jsonobject() { |
post 方法
1 | private void volley_psot_jsonobject() { |
volley 和 activity 的关联
- 在销毁activity时,取消掉该activity的所有请求
1 | @Override |
自定义 volley
- 有时候,我们需要在请求成功时,做些事情;在请求失败时,做些事情;请求多了,每次都写会重复很多。所以就需要自定义volley了
首先:定义 VolleyInterface 抽象类
声明一个有3个参数的构造方法,上下文,成功监听回调,失败监听回调
两个抽象方法: 请求成功方法, 请求失败方法
在这里,可以做一些处理,请求成功了做什么,请求失败了做什么
注意:这里的mListener mErrorListener都是静态的,且这两个对象都是在这个文件中创建和使用,自给自足
1 | public abstract class VolleyInterface { |
接着:定义请求工具类,这里以StringRequest为例
get方式的参数:上下文,请求地址,tag标签,回调接口
post方式的参数:上下文,请求url,tag标签,请求参数params,回调接口
这里记得start一下请求队列
1 | public class VolleyRequest { |
最后:使用自定义volley实现get请求 : stringrequest
1 | private void volley_get() { |
图片缓存
ImageRequest : 加载远程图片
ImageCache
单独使用起不到缓存作用,要搭配LruCache
一起使用ImageCache + ImageView : 图片缓存
ImageCache + NetWorkImageView : 图片缓存
ImageRequest 的使用
- 加载远程图片
1 | private void volley_img_request() { |
ImageLoader + ImageCache + LruCache :缓存图片
这里需要用到 ImageLoader 类,该对象接受两个参数:请求队列,imagecache
首先:定义一个ImageCache的子类,BitmapCache
1 | public class BitmapCache implements ImageCache { |
- 接着:获取并显示图片,使用
imageview
1 | private void volley_img_loader() { |
- 接着:获取并显示图片,使用
networkimageView
1 | private void volley_img_network() { |