Volley初探
2016-03-26 15:42
232 查看
android中volley通信框架简介
1. 什么是Volley在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,在2013年Google I/O 上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
2. Volley引入的背景
比如在以前从网上下载图片的步骤可能是这样的流程:
在ListAdapter#getView()里开始图像的读取。
通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源
在AsyncTask#onPostExecute()里设置相应ImageView的属性。
再比如,屏幕旋转的时候,有时候会导致再次从网络取得数据。为了避免这种不必要的网络访问,我们可能需要自己写很多针对各种情况的处理,比如cache什么的。
再有,比如ListView的时候,我们滚动过快,可能导致有些网络请求返回的时候,早已经滚过了当时的位置,根本没必要显示在list里了,虽然我们可以通过ViewHolder来保持url等来实现防止两次取得,但是那些已经没有必须要的数据,还是会浪费系统的各种资源
再或者,activity退出之后线程还在加载网络资源,浪费资源
3. Volley提供的功能
JSON,图像等的异步下载;
网络请求的排序(scheduling)
网络请求的优先级处理
缓存,自带硬盘缓存(普通数据、图片、JSON),另外我们在加载图片时候通过ImageLoader还可加入LruCache
多级别取消请求
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
类似于新闻客户端,微博等朋友圈之类的客户端属于数据量不大,但网络通信频繁的,因此非常适合使用Volley。
4.Volley中包含这么几种类型的请求:
StringRequest - 返回字符串数据
JsonObjectRequest - 返回JSONArray数据
JsonArrayRequest - 返回JSONObject数据
ImageRequest - 返回Bitmap类型数据
虽然有两种方式都可以返回我们请求的数据,但是JSONObjectRequest请求在处理json对象的返回结果时候效率更高,所以确定返回结果是json类型时候可以使用JSONObjectRequest。
使用方法可参考:http://www.07net01.com/2015/08/901192.html
http://blog.csdn.net/xyz_lmn/article/details/12165391
http://blog.csdn.net/guolin_blog/article/details/17482095
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories