网络请求框架---Volley

去年的Google I/O大会为android开发者带来了一个网络请求框架,它的名字叫做Volley。Volley诞生的使命就是让Android的网络请求更快,更健壮,而且它的网络通信的实现是基于HttpURLConnection的。前几天我整理了两个网络请求工具类,应付日常工作的开发需求还是没问题的,自己分别在HttpURLConnection和HttpClient的基础上进行进一层的封装,保证了API的足够简洁友好。有兴趣的同学可以回头去翻翻,源码在Github上,搜索AndroidHttpUtil即可找到。Volley基于jdk原生的网络请求类和BlockingQueue实现了它的网络请求的功能。下面为大家一一介绍下Volley为编程带来的实在好处。

准备步骤

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

  2. 导入项目,再export Jar包,推荐导出为带有源码的,便于查看源码

图片加载

01232145_weNA.jpg

01232145_UCUS.jpg

同时Volley还为开发者提供了一个直接加载网络url的ImageView---NetworkImageView,使用起来更加的方便。

01232146_2x4p.jpg

HTTP请求

Volley支持Http请求的所有八种方法,支持请求成功和失败的回调。还支持设置超时时间、失败后的重连次数、设置url缓存、以及为请求设置Tag,便于中断Request请求。请求成功的话,支持接收String、JsonObject和自定义bean,请求失败的话VolleyError有很多子类,也方便排查网络请求失败的原因。

GET请求的实现如图

01232146_qOKa.jpg

01232146_I1Gl.jpg

如果需要添加请求参数的话,可以去复写Request中的getParams()方法,返回一个装有请求参数的Map集合就Ok了。同时如果中断请求线程也很简单,可以通过请求的引用直接cancel,也可以通过

RequestQueue.cancelAll(TAG_REQUEST)基于请求绑定的tag去中断。这样就避免了页面结束而仍有后台无用线程运行的现象了。Volley还支持网络请求的优先级、排序等。

写在最后:花了半天的时间研究Volley,发现它试用的两个场景。一是网络图片加载,二是网络请求返回json格式的数据。但是它的优势并不明显,其他第三方的图片加载框架和网络请求框架,无论都api的简洁易用方面看,还是扩展功能方面看都比它优秀。我推荐大家加载图片就使用Android-Universal-ImageLoader,网络请求的话,android-async-http,okHttp都是不错的选择。如果不想使用网络请求的框架,AndroidHttpUtil也是个很好选择或许是我没发现它的好,如果有朋友有啥异议,欢迎留言。

Volley demo地址https://github.com/smanikandan14/Volley-demo

AndroidHttpUtil源码地址https://github.com/JackCho/AndroidHttpUtil


如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎大家加群,共同探讨下Android和Java技术,一起壮大我们的微信干货分享社区。

转载于:https://my.oschina.net/jack1900/blog/297311

简介: 本框架是在Netroid的基础之上进行了封装,节省了其中配置的过程和一些不必要的操作 主要进行文本请求和图片请求,图片请求都进行了缓存(内存缓存和sd卡缓存)的封装,sd卡缓存时间可自行更改. 文本请求可传入解析的泛型clazz,即可返回解析后的clazz对象进行数据 操作,如果不需要进行数据解析,可通过另一种方式获取原生的string; 单图请求,单图请求可执行对本地asset文件夹,sd卡,http三种请求模式.只需传入相应的路径即可; 多图请求,多图请求主要是针对listview这种图文混排模式而生,能快速加载图片并实现缓存,不需要考虑 图片错位问题.只需传入相应的url即可完成全部功能. 使用说明: 1:在新创建的Manifest.xml中application中申明: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="com.aqs.application.UApplication" > 并初始化Const.init();此处的初始化主要是对内存缓存,SD卡缓存大小,缓存时间等进行设置,如果不初始化,则按使用默认配置; 2:依赖HttpAqs-library或者jar包 3:通过公有方法进行网络请求,示例如下: >文本请求: >解析后的文本请求: HttpRequest.reqquest(int,String,Parse,Class){....}; >原生string文本请求: HttpRequest.getString(String,AqsString){...} >单张图片请求: HttpRequest.setImage(ImageView,String,int,int){...} >多张图片请求: 可使用AQSImageView控件来加载图片;特别是针对listview图文混排 实现方法: >在布局中添加 >在代码中 av.setImageUrl(url);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值