Android网络请求通信之Volley
2016-02-18 10:17
477 查看
一、Volley简介
Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库。以下是对Volley的简单归纳。
Volley的优点:
使网络通信更快、更简单、更健壮,用Volley开发的话,开发效率会得到很大提升,开发出来的网络模块的稳定性也会非常高
Get、Post网络请求及网络图像的高效率异步处理请求,Volley帮我们实现了网络请求的异步化,而且它的Get和Post请求也是非常高效的
对网络请求进行排序、优先级处理
网络请求的缓存,当网络比较缓慢时或网络情况不太好的时候,Volley可以将我们上次请求的数据进行简单的缓存,提高用户体验
Volley具有多级别取消请求,当我们有多个请求在同时进行的时候,可以做到同时取消这些请求的操作,非常的方便
和Activity生命周期的联动,当Activity结束、销毁的时候,可以同时取消网络请求的操作,避免APP在后台继续进行网络请求操作,导致APP性能和用户体验都非常差
Volley的缺点:
Volley不适合文件的上传和下载,当我们有上传和下载的需求的时候,可以考虑其他框架
为什么要使用Volley:
有高效的Get/Post方式的数据请求交互(效率非常高)
网络图片的加载和缓存(不使用Volley的情况下进行网络图片的处理会非常的麻烦,而且非常容易造成内存溢出,如果使用Volley,可以自动为图片进行缓存,不但节省流量,而且提高APP的性能)
是Google官方推出的针对Android平台的专用的网络通信库,Google的团队网络请求这部分优化的是非常好的,非常权威
性能很稳定,效率很强劲
使用Volley从服务器端获取数据的几种方式:
StringRequest:对请求返回的数据类型不确定的情况下使用,涵盖了后面的两种请求对象
JsonObjectRequest:确定请求返回的数据类型是JsonObject时使用,解析效率比StringRequest高一些
JsonArrayRequest:确定求求返回的数据类型是JsonArray时使用
本帖解决的有关Volley的五个问题:
Volley的Get和Post请求方式的使用
Volley的网络请求队列的建立和取消队列请求
Volley与Activity生命周期的联动
Volley的简单二次封装
Volley获取网络图片
二、Volley的网络请求队列的建立和取消队列请求
我们可以建立一个全局的请求队列,再在需要的时候建立一个请求,并将这个请求加入到请求队列中,这样一来整个APP的请求都可以通过这个队列来管理。因为Volley有全局请求队列这一功能,所以Volley更适合于并发的、对效率和性能要求非常好的场景。我们需要建立一个请求队列所在的全局类(继承自Application类),代码如下:
图片缓存类BitmapCache
运行结果如下图所示:
注:第一张图是模糊的,可见用ImageRequest获取到的图片质量不如后两种方法。
最后附上 Volley用到的JAR包
Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库。以下是对Volley的简单归纳。
Volley的优点:
使网络通信更快、更简单、更健壮,用Volley开发的话,开发效率会得到很大提升,开发出来的网络模块的稳定性也会非常高
Get、Post网络请求及网络图像的高效率异步处理请求,Volley帮我们实现了网络请求的异步化,而且它的Get和Post请求也是非常高效的
对网络请求进行排序、优先级处理
网络请求的缓存,当网络比较缓慢时或网络情况不太好的时候,Volley可以将我们上次请求的数据进行简单的缓存,提高用户体验
Volley具有多级别取消请求,当我们有多个请求在同时进行的时候,可以做到同时取消这些请求的操作,非常的方便
和Activity生命周期的联动,当Activity结束、销毁的时候,可以同时取消网络请求的操作,避免APP在后台继续进行网络请求操作,导致APP性能和用户体验都非常差
Volley的缺点:
Volley不适合文件的上传和下载,当我们有上传和下载的需求的时候,可以考虑其他框架
为什么要使用Volley:
有高效的Get/Post方式的数据请求交互(效率非常高)
网络图片的加载和缓存(不使用Volley的情况下进行网络图片的处理会非常的麻烦,而且非常容易造成内存溢出,如果使用Volley,可以自动为图片进行缓存,不但节省流量,而且提高APP的性能)
是Google官方推出的针对Android平台的专用的网络通信库,Google的团队网络请求这部分优化的是非常好的,非常权威
性能很稳定,效率很强劲
使用Volley从服务器端获取数据的几种方式:
StringRequest:对请求返回的数据类型不确定的情况下使用,涵盖了后面的两种请求对象
JsonObjectRequest:确定请求返回的数据类型是JsonObject时使用,解析效率比StringRequest高一些
JsonArrayRequest:确定求求返回的数据类型是JsonArray时使用
本帖解决的有关Volley的五个问题:
Volley的Get和Post请求方式的使用
Volley的网络请求队列的建立和取消队列请求
Volley与Activity生命周期的联动
Volley的简单二次封装
Volley获取网络图片
二、Volley的网络请求队列的建立和取消队列请求
我们可以建立一个全局的请求队列,再在需要的时候建立一个请求,并将这个请求加入到请求队列中,这样一来整个APP的请求都可以通过这个队列来管理。因为Volley有全局请求队列这一功能,所以Volley更适合于并发的、对效率和性能要求非常好的场景。我们需要建立一个请求队列所在的全局类(继承自Application类),代码如下:
public class BitmapCache implements ImageLoader.ImageCache { public LruCache<String, Bitmap> cache; public int maxCacheLength = 10 * 1024 * 1024; @SuppressLint("NewApi") public BitmapCache() { cache = new LruCache<String, Bitmap>(maxCacheLength) { @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight(); } }; } @SuppressLint("NewApi") @Override public Bitmap getBitmap(String key) { return cache.get(key); } @SuppressLint("NewApi") @Override public void putBitmap(String key, Bitmap value) { cache.put(key, value); } }
图片缓存类BitmapCache
运行结果如下图所示:
注:第一张图是模糊的,可见用ImageRequest获取到的图片质量不如后两种方法。
最后附上 Volley用到的JAR包
相关文章推荐
- Linux Netcat 命令——网络工具中的瑞士军刀
- jmeter --HTTP属性管理器
- 《网络攻防技术与实践》学习指导
- centos 通过http方式访问本地目录(文件服务器)
- 网络流算法总汇(ek,dinic,isap)
- 为你详细解读HTTP请求头的具体含意
- springmvc创建restful接口通过HttpURLConnection创建连接传递数据
- http://www.apple.com/customer-letter/
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 15 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 14 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 12 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Programming Assignment 4: Restricted Boltzmann Machin
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 11 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 10 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 13 Quiz
- springmvc创建restful接口通过HttpURLConnection创建连接传递数据
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 9 Quiz
- jmeter ---测试TCP服务器/模拟发送TCP请求
- 机器学习中的神经网络Neural Networks for Machine Learning:Programming assignment 3: Optimization and generaliza
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 8 Quiz