Android:谷歌Volley网络框架讲解——第一篇
来源:互联网 发布:mac原生ntfs 编辑:程序博客网 时间:2024/05/21 23:55
Volley详细解析:http://www.cnblogs.com/bvin/category/485718.html
今年的谷歌IO大会上,谷歌推出了自己的网络框架——Volley。
1. 什么是Volley
在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
这是Volley名称的由来: a burst or emission of many things or a large amount at once
在Google IO的演讲上,其配图是一幅发射火弓箭的图,有点类似流星。见下图
这个框架对网络请求数据缓存做了很多优化,
2.
先看一段网络请求的代码吧
mQueue = Volley.newRequestQueue(getApplicationContext()); //StringRequest四个构造参数分别是Request类型,url,网络请求响应监听器,错误监听器 mQueue.add(new StringRequest(Method.GET, "http://www.baidu.com/", new Listener(){ @Override public void onResponse(String arg0) { // TODO Auto-generated method stub Log.e("onResponse", arg0); } }, new ErrorListener(){ @Override public void onErrorResponse(VolleyError arg0) { // TODO Auto-generated method stub Log.e("onErrorResponse", arg0.toString()); } })); mQueue.start();
Volley
首先,通过Volley的静态方法new一个请求队列,再调用请求队列(RequestQueue是由缓存和网络线程构造的)的start方法。
然后,得到一个RequestQueue请求队列时,就添加一个请求Request,Volley提供有三种请求的封装,一个是StringRequest,一个事ImageRequest,还有一个是JsonRequest。
最后,调用RequestQueue的start方法就可以开始一条网络请求了。
可以看出Volley只是RequestQueue的一个helper。
RequestQueue
所以,这里一个最核心的就是RequestQueue请求队列这个了。
这个请求队列是有两个东西完成,一个是cache一个network。
这个RequestQueue的构造形式有四种:除了上面这两个还有线程池数量,响应委派。
1,public RequestQueue(Cache cache, Network network, int threadPoolSize,ResponseDelivery delivery)
2,
3,public RequestQueue(Cache cache, Network network)
其实Cache和Network真正的工作者还是CacheDispatcher缓存调度和NetworkDispatcher网络调度。下期再详细讲解Dispatcher。。
RequestQueue的成员方法主要有下面几个:
NetworkDispatcher
这个就是网络调度的核心,这是一个继承Thread的类,构造方法如下
public NetworkDispatcher(BlockingQueue queue,Network network, Cache cache,ResponseDelivery delivery)
一个Request的队列,Network ,Cache ,ResponseDelivery 。。。
它的run()方法就是把请求队列取出一个Request,让Network 去执行一次请求再通过ResponseDelivery 进行解析。
Network
public interface Network { public NetworkResponse performRequest(Request
// DiskBasedCache cache = new DiskBasedCache(file, 20*1024*1024);
// Network network = new BasicNetwork(new HurlStack());
// queue = new RequestQueue(cache, network);
// queue.add(request);
// queue.start();
- Android:谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——网络枢纽
- 谷歌Volley网络框架讲解——网络枢纽
- 谷歌Volley网络框架讲解
- Android:谷歌Volley框架讲解——第二篇
- Android 网络框架Volley源码讲解
- Android —— 网络请求框架 Volley
- Android网络图片下载框架—Volley
- 谷歌Volley网络框架讲解——Network及其实现类
- 谷歌Volley网络框架讲解——HttpStack及其实现类
- 谷歌Volley网络框架讲解——HttpStack及其实现类
- 谷歌Volley网络框架讲解——HttpStack及其实现类
- 谷歌Volley网络框架讲解——Network及其实现类
- Python -- Eclipse安装PyDev插件
- Java线程同步-解决方法
- 收集的 Bootstrap 模板资源或者一些漂亮的站点
- 后缀数组(SuffixArray) 学习笔记
- SSH Secure Shell 中文显示乱码 解决办法
- Android:谷歌Volley网络框架讲解——第一篇
- 2月11日iOS学习笔记
- Spring MVC Json 乱码问题
- swift中函数
- 在hadoop作业中自定义分区和归约
- 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
- FRDM-KE04z 新板子PC找不到 openSDA 串口
- Android:谷歌Volley框架讲解——第二篇
- 2015.01--晚上想想千条路