Volley 笔记
来源:互联网 发布:java web 七牛云接口 编辑:程序博客网 时间:2024/04/30 08:31
Volley概述
Volley是Google 2013年I/O大会推出的H针对Android的HTTP网络请求框架,让网络请求更简单,更快!
特点
- 自动调度网络请求
- 支持并发网络连接
- 支持标准的HTTP缓存协议
- 支持请求优先级设置(4级)
- 支持取消单个或多个请求
- 易于定制,扩展性强。比如Retry&Backoff机制
- 强大的网络请求能力让你轻松的发送异步请求来填充UI数据
- 提供调试和跟踪工具
优点
擅长将RPC(远程过程调用协议,C/S模式)类型的操作,用来展示服务器数据。比如以某种数据格式获取一页搜索结果。支持任意的数据传输格式,比如图片,字符串,json,你也可以定义自己的数据格式。其实就是自定义Request。Volley呢,让你不再写这些重复的模板代码(网络请求逻辑,不再重复造轮子),这样你就可以专注于你应用本身的业务逻辑.
- 缺点
由于Volley都是在内存中解析和处理数据,所以不适合大数据量的下载操作。如果需要下载大文件,可以考虑使用系统的DownloadManager或者自定义HttpStack。
RequestQueue 请求队列
通过Volley.newRequestQueue获取默认配置的消息队列。
创建请求:new StringRequest(...).setTag(TAG);添加请求:queue.add(stringRequest);取消请求: mRequestQueue.cancelAll(TAG);
配置RequestQueue
// Instantiate the cacheCache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap// Set up the network to use HttpURLConnection as the HTTP client.Network network = new BasicNetwork(new HurlStack());// Instantiate the RequestQueue with the cache and network.mRequestQueue = new RequestQueue(cache, network);// Start the queuemRequestQueue.start();
RequestQueue启动后,会开启一个CacheDispatcher和默认4个NetworkDispatcher。
DiskBasedCache用来给CacheDispatcher存取http缓存response,
BasicNetwork用来给NetworkDispatcher发起Request
BasicNetwork初始化的时候需要设置HTTP 客户端。volley中默认提供HttpUrlconnection(api>=9)和HttpClient两种选择
自带Request
StringRequest,ImageRequest,JsonRequest(JsonObjectRequest,JsonArrayRequest)
ImageRequest
发送图片请求,包含图片输入流的解析操作。
ImageLoader:图片加载帮助类,针对批量请求相同URL的ImageRequest做了合并处理,并增加了缓存的处理,对外暴露缓存接口,可自定义缓存方式。
NetworkImageView:ImageView的子类,通过外部提供的ImageLoader,扩展了加载网络图片的功能
自定义Request
继承Request类,实现deliverResponse和parseNetworkResponse两个抽象方法
public class GsonRequest<T> extends Request<T> { private final Gson gson = new Gson(); private final Class<T> clazz; private final Map<String, String> headers; private final Listener<T> listener; /** * Make a GET request and return a parsed object from JSON. * * @param url URL of the request to make * @param clazz Relevant class object, for Gson's reflection * @param headers Map of request headers */ public GsonRequest(String url, Class<T> clazz, Map<String, String> headers, Listener<T> listener, ErrorListener errorListener) { super(Method.GET, url, errorListener); this.clazz = clazz; this.headers = headers; this.listener = listener; } @Override public Map<String, String> getHeaders() throws AuthFailureError { return headers != null ? headers : super.getHeaders(); } @Override//处理解析出的response protected void deliverResponse(T response) { listener.onResponse(response); } @Override//实现原始NetworkResponse的解析工作 protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String json = new String( response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success( gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } }
- Volley笔记
- Volley 笔记
- Volley 笔记
- Volley 笔记
- 笔记70---volley
- Volley的使用笔记
- Volley学习笔记
- Volley 源码笔记(1)
- Volley 源码笔记(2)
- volley学习笔记
- Android Volley 笔记
- volley学习笔记
- Volley学习笔记
- volley框架学习笔记
- Volley的学习笔记
- volley学习笔记
- Volley使用原理笔记
- volley使用笔记
- Spring-aop实现切面的四种方式 下篇 (源码)
- 矩阵(Matrix)
- JSPatch iOS热修复实现原理详解
- 【51nod 1065】【贪心+前缀和】最小正子段和【最小正子串和】
- xUtils3.x的网络请求封装和请求https之单向SSL验证
- Volley 笔记
- 读写txt文件
- SDWebImage 原理
- R GUI资料
- Django 基本命令
- 数据库服务器1521连接数特别多
- webapi上传示例及调用方式
- ubuntu 常用软件下载
- samtools的使用