文档开发者中心
我的

【综合】Android学习笔记:Volley

一、Volley基本概念


Volley的Github地址:https://github.com/google/volley


Volley的基本用法:下载Volley库且放在libs目录下并add到工程中。(官网使用说明<需科学上网>)


在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕,因为Volley处理http返回的默认实现是BasicNetwork,它会把返回的流全部导入内存中,下载大文件会发生内存溢出。(与之相对,OkHttp则更适合数据量大的重量级网络请求)


Volley框架默认在Android2.3及以上版本使用HttpURLConnection来完成网络操作,在Android2.3以下版本使用HttpClient来完成网络操作。


Volley请求网络都是基于请求队列的,只需要把请求放在请求队列(RequestQueue)里,请求队列就会依次进行请求。



二、Volley进行HTTP通信的步骤


1、创建RequestQueue队列

2、创建Request对象,并加入队列中

3、处理回调事件



三、Volley框架中的请求类型





四、Volley请求流程图





五、如何使用Volley进行异步加载图片?


1、使用Volley框架的ImageLoader类来异步加载图片

ImageLoader类的内部是使用ImageRequest类来实现的。在加载图片时,由于该类不仅对图片进行缓存,而且还可以过滤掉重复的链接,避免重复发送请求,因此它比ImageRequest更加高效。


使用ImageLoader类加载网络图片的具体步骤如下:


1、分别创建一个RequestQueue、ImageCache、ImageLoader对象。

2、通过ImageLoader类获取一个ImageListener的对象。

3、调用ImageLoader类的get()方法加载网络上的图片。

2、使用Volley框架的NetworkImageView来异步加载图片

NetworkImageView继承自InageView,是Volley框架中提供的一个全新且简单加载图片的控件,该控件可直接用于显示网络上的图片。



六、Volley的执行过程


默认情况下,Volley中开启四个网络调度线程和一个缓存调度线程,首先请求会加入缓存队列,缓存调度线程从缓存队列中取出线程,如果找到该请求的缓存就直接读取该缓存并解析,然后回调给主线程,如果没有找到缓存的响应,则将这个请求加入网络队列,然后网络调度线程会轮询取出网络队列中的请求,发起HTTP请求,解析响应并将响应存入缓存,回调给主线程。



七、为什么Volley不适合下载上传大文件?为什么适合数据量小的频率高的请求?


1、volley基于请求队列,Volley的网络请求线程池默认大小为4。意味着可以并发进行4个请求,大于4个,会排在队列中。并发量小所以适合数据量小频率高的请求。

2、因为Volley下载文件会将流存入内存中(是一个小于4k的缓存池),大文件会导致内存溢出,所以不能下载大文件,不能上传大文件的原因和1中差不多,设想你上传了四个大文件,同时占用了volley的四个线程,导致其他网络请求都阻塞在队列中,造成反应慢的现象。



八、StringRequest方式的GET用法


九、StringRequest方式的POST用法


十、VolleyDemo

项目简介:采用Volley框架,通过访问聚合API查询手机归属地。
项目地址:https://github.com/ambition-hb/VolleyDemo

部分代码如下:

点赞
收藏
回复
2
分享
举报
浏览828 发布于2019-10-28 00:59未知归属地
全部评论
最多点赞
最新发布
最早发布

哈哈哈哈我表示有点看不懂啊

2楼回复于2019-10-29 11:10 未知归属地

感谢分享感谢分享

1楼回复于2019-10-29 10:02 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

目录 收起
九、StringRequest方式的POST用法
十、VolleyDemo
了解社区公约,与您携手共创和谐专业的开发者社区。