Volley实现原理简述

                          Volley实现原理简述

一、介绍

Volley是Goole退出的Android异步网络请求框架和图片加载框架。

主要特点:

1)扩展性强。Volley大多是基于接口的设计。

2)符合Http规范。

3)Android2.3及以上版本默认基于HttpUrlConnection,2.3以下基于HttpClient。

4)提供简便的图片加载工具。

二、使用

1、调用:通过newRequestQueue()函数新建并启动一个请求队列,向RequestQueuezhon

不断add Request。

代码示例

public class MyApplication extends Application {

public static RequestQueue mQueue;

@Override

public void onCreate() {

super.onCreate();

mQueue = Volley.newRequestQueue(getApplicationContext());

}

public static RequestQueue getVolleyQueue() {

return mQueue;

}

}

2、使用示例:

StringRequest request = new StringRequest(Method.GET, tabUrl,

new Listener<String>() {

@Override

public void onResponse(String arg0) {

Gson gson = new Gson();

tEntity = gson.fromJson(arg0, TabEntity.class);

list = tEntity.getResult();

adapter = new PlayAdapter(tEntity, PlayerActivity.this);

lvPlay.setAdapter(adapter);

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

}

});

request.setTag("abc");// 通过标签取消请求

MyApplication.getVolleyQueue().add(request);// 请求添加到请求队列中

3、post请求工具类

public class NormalPostRequest extends Request<JSONObject> {

private Map<String, String> mMap;

private Listener<JSONObject> mListener;

public NormalPostRequest(String url, Listener<JSONObject> listener, ErrorListener errorListener,

Map<String, String> map) {

super(Request.Method.POST, url, errorListener);

mListener = listener;

mMap = map;

}

// mMap是已经按照前面的方式,设置了参数的实例

@Override

protected Map<String, String> getParams() throws AuthFailureError {

return mMap;

}

// 此处因为response返回值需要json数据,和JsonObjectRequest类一样即可

@Override

protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {

try {

String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response));

} catch (UnsupportedEncodingException e) {

return Response.error(new ParseError(e));

} catch (JSONException je) {

return Response.error(new ParseError(je));

}

}

@Override

protected void deliverResponse(JSONObject response) {

mListener.onResponse(response);

}

}

四、优缺点:

优点:

1)自动调度网络请求。

2)用于多个并发的网络连接。

3)通过使用标准的Http缓存机制保持磁盘和内存响应的一致。

4)支持请求优先级。

5)支持取消请求的强大API,可以取消单个请求或多个。

6)易于定制。

7)健壮性:便于正确的更新UI和获取数据

8)包含调试和追踪工具。

缺点:

1)在BasicNetWork中判断了statusCode(statusCode < 200 || statusCode > 299),如何符合条件直接抛出IOException(),不够合理。

2)导致401等其它状态抛出IOException。

3)图片加载性能一般。

时间: 2024-11-14 07:57:51

Volley实现原理简述的相关文章

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输

Volley 实现原理解析(转)

Volley 实现原理解析 转自:http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布. 名字由来:a burst or emission of many things or a large amount at once发布演讲时候的配图 从名字由来和

java多线程模式ThreadLocal原理简述及其使用详解

原创整理不易,转载请注明出处:java多线程模式ThreadLocal原理简述及其使用详解 代码下载地址:http://www.zuidaima.com/share/1781557457128448.htm ThreadLocal是为了使每个线程保存一份属于自己的数据. 先看一个使用ThreadLocal的实例. package com.zuidaima.aop.framework; import com.zuidaima.core.NamedThreadLocal; public abstra

Gexmul虚拟机内存空间原理简述

Gxemul将内存空间分为两部分管理,一部分是物理内存,地址分配到0x00000000,另一部分是device的地址,注册device的时候由device自己指定空间 1 创建物理内存 memory.cc memory_new {     初始化物理内存参数     mem->physical_max = physical_max;     mem->dev_dyntrans_alignment = 4095;     创建物理内存     mem->pagetable = (unsig

FileCloud 的原理简述&amp;自己搭建文件云

FileCloud 的原理简述&自己搭建文件云 copyright(c) by zcy 关于如何使用IIS创建asp服务,请读者自行研究 代码的存储: 根目录 filecloudEV.html 提前验证 filecloudEV.aspx 判断密码是否正确 filecloudMAIN.aspx 主界面 UpLoad.asp 上传界面 SaveFile.asp 保存文件 InputFilename.aspx 让用户输入文件名 AddPath.aspx 将当前文件加入文件清单 clsField.asp

Spark 学习: spark 原理简述与 shuffle 过程介绍

Spark学习: 简述总结 Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境.提供了 java,scala, python,R 等语言的调用接口. Spark学习 简述总结 引言 1 Hadoop 和 Spark 的关系 Spark 系统架构 1 spark 运行原理 RDD 初识 shuffle 和 stage 性能优化 1 缓存机制和 cache 的意义 2 shuffle 的优化 3 资源参数调优 4 小结 本地搭建 Spark 开发环境 1 Spark-Scal

Volley工作原理与设计模式

前言: Volley是一个发布以来流行至今的网络框架,他的好处也人尽皆知.高并发.不易OOM.代码简介.可拓展性强等等,几乎大多数项目都会集成它或它的改良版.但Volley为什么在高并发上性能好?官网为什么说它只适合体积小的网络请求呢? 通过本章我们可以了解如下问题: 1.了解Volley的工作原理. 2.在同时有两个相同的请求时,如何优化处理? 3.请求数量大.资源竞争激烈的情况,如何优化线程? 4.为什么说Volley只适合于小数据请求(不超过3M)? 目录: 一.简单介绍Volley的工作

网络知识杂谈 - https - 原理简述

概述 简单描述 https 尽量介绍它的原理 实际的机制, 可能会更加复杂一些... 背景 这玩意, 困扰我好多年了 今天开始, 想做个了断 之前工作也接触过, 但从我的角度来说, 认识很浅 会配置 给个证书, 放好位置, 调一下选项 会抓包 开个 charles, 配置几下, 手机挂代理, 安装证书 具体干啥 只知道是个 加密的体系 因为抓包知道, 这不是明文 机制的理解和思考 看过 图解http, 没理解就放过去了... 最后, 将这个东西的时候, 如果你忍无可忍想说一句, 禁止套娃...

php原理简述

语言有静态语言和动态语言之分,静态语言一般指先编译后执行,动态语言一般只边解释边执行.静态语言包括c,c++,Java等,动态语言有PHP,JavaScript,Python等. 任何语言都可以设计成动态或者静态,只是因为应用领域和需求不同而有了分别.编译型语言一次编译处处运行,更强调的是执行速度.而动态语言即时编写即时运行,更关注的是灵活.语言没有优劣,优劣的是一用语言的人. 跟开发语言相关的只是是编译原理,大家了解一下就行,编译语言一般的过程有词法分析,语法分析,语法编译,生成中间码,存储管