您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android Volley 通信