google volley的使用

1.Volley简介

 Volley是Android平台上的网络通信库,能使网络通信更快、更简单、更健壮。那么在2013年的Google I/O大会上volley发布了。

 Volley名称的由来: a burst or emission of many things or a large amount at once,下面是Google为Volley的配图:

  

从中可以看出,volley适合通讯频率高,但传输数据量小的情景。

2.Volley简化了网络通信的一些开发,特别是针对以下两种情况:

  (1).获取JSON对象

  (2).图片的异步加载

3.Volley架构

  Volley使用了线程池来作为基础结构,主要分为主线程、cache线程、network线程。主线程和cache都只有一个,而network线程可以有多个,这样就能解决并行问题。详细可以参考下图,选自Google I/O 2013演讲

  

4.使用Volley

  4.1 从git库克隆一个下来

    git clone https://android.googlesource.com/platform/frameworks/volley

  4.2 从服务端获取json数据

    

 1   //获取json数据
 2     public void getJSONVolley(){
 3         String url = "http://192.168.1.120:8080/VolleyTest?format=json";
 4         //创建请求队列
 5         RequestQueue requestQueue = Volley.newRequestQueue(this);
 6         //创建json请求对象
 7         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
 8             @Override
 9             public void onResponse(JSONObject response) {
10                 Log.i("response","response is:"+response.toString());
11             }
12         },new Response.ErrorListener() {
13             @Override
14             public void onErrorResponse(VolleyError volleyError) {
15                 Log.e("error",volleyError.getMessage().toString());//打印异常信息
16             }
17         });
18         requestQueue.add(jsonObjectRequest);
19     }

  4.3 volley中使用ImageView加载图片

 1 //加载图片
 2     public void loadImageVolley(){
 3         String url = "http://news.xnnews.com.cn/ylxw/201502/W020150203612623574709.jpg";
 4         RequestQueue requestQueue = Volley.newRequestQueue(this);
 5         final LruCache<String,Bitmap> lruCache = new LruCache(20);
 6         ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
 7             @Override
 8             public Bitmap getBitmap(String key) {
 9                 return lruCache.get(key);
10             }
11             @Override
12             public void putBitmap(String key, Bitmap value) {
13                 lruCache.put(key,value);
14             }
15         };
16         ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
17         ImageLoader.ImageListener imageListener = imageLoader.getImageListener(imageView,R.drawable.ic_launcher,R.drawable.ic_launcher);
18         imageLoader.get(url,imageListener);
19     }

  4.4 使用NetworkImageView异步加载图片

 1 //异步加载图片
 2     public void networkImageView() {
 3         String url = "http://news.xnnews.com.cn/ylxw/201502/W020150203612623574709.jpg";
 4         RequestQueue requestQueue = Volley.newRequestQueue(this);
 5         final LruCache<String,Bitmap> lruCache = new LruCache(20);
 6         ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
 7             @Override
 8             public Bitmap getBitmap(String key) {
 9                 return lruCache.get(key);
10             }
11             @Override
12             public void putBitmap(String key, Bitmap value) {
13                 lruCache.put(key,value);
14             }
15         };
16         ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
17         networkImageView.setTag(url);
18         networkImageView.setImageUrl(url,imageLoader);
19     }

5.总结

 在请求json数据和图片异步加载时,可以考虑使用Volley,有兴趣的可以读下Volley的源码。

Google I/O 2013 网络框架Volley演讲pdf地址:http://download.csdn.net/detail/t12x3456/5686041

Google Volley源码下载地址:http://download.csdn.net/detail/u013165880/8452853

时间: 2024-08-06 23:11:54

google volley的使用的相关文章

Google Volley框架源码走读

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<Google Volley使用之自定义> http://blog.csdn.net/yanbober/article/details/45307099 开源项目链接 Volley自定义 Android Developer文档 Volley主页:https://android.g

基于Google Volley的Android Http连接库

android http lib based on volley-基于Google Volley的Http库 项目Github地址:https://github.com/sddyljsx/android-http-lib-based-on-volley 使用说明: 一.优化了volley的组织结构,重新定义的包架构更加清晰明了,方便阅读,扩展 包组织结构图如下所示: base包中包括了volley架构的基础类,抽象类. impl包中包括了base包中类的具体实现. process包中包括了网络请

Google Volley: How to send a POST request with Json data?

sonObjectRequest actuallyaccepts JSONObject as body. From http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/ final String url = "some/url"; final JSONObject jsonBody = /* ... */; new JsonObjectRequest(url, jsonBody,

Google Volley框架之https请求

先插一句.Google出的volley框架本身是支持https请求的,可是仅仅是针对有第三方机构认证过的. 假设自己随便在网上搞的一个证书,那volley是不支持请求的. 本文讲下怎样让volley支持自己搞的https证书. 改动volley源代码:com.android.myvolley.toolbox.HurlStack /** * Create an {@link HttpURLConnection} for the specified {@code url}. */ protected

如何使用Google Volley网络库发起带Header的HTTP请求?

By Long Luo 由于合作的第三方iQiyi视频的数据源更新速度很慢,通过和iQiyi反馈,于是提供了新的API接口. 通过阅读新API接口说明,在发起HTTP Get请求时,必须**同时带2个加密的Header参数**,分别是时间戳和MD5加密后的key.时间戳以及客户端参数,否则无法返回正确的请求. 目前在Android客户端使用的是Google开源Volley库,支持各种HTTP请求,图片缓存,JSON解析,性能十分强大.之前使用的接口都是直接发起HTTP Get请求,附带相关参数即

基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类

这段时间做新的Android项目的客户端和和REST API通讯框架架构设计,使用了很多新技术,最终的方案也相当简洁优雅,客户端只需要传Java对象,服务器端返回json字符串,自动解析成Java对象, 无状态安全验证基于JWT实现,JWT规范的细节可以参考我前面的文章.JWT的token和数据防篡改签名统一放在HTTP Header中,这样就实现了对请求内容和返回结果的无侵入性,服务器端也可以在全局过滤器中统一处理安全验证. Android客户端使用了Volley网络请求框架和Gson解析库,

Android实战之你应该使用哪个网络库?

前言 目前基本上每个应用都会使用HTTP/HTTPS协议来作为主要的传输协议来传输数据.即使你没有直接使用HTTP协议,也会有成堆的SDK会包含这些协议,譬如分析.Crash反馈等等.当然,目前也有很多优秀的HTTP的协议库,可以很方便的帮助开发者构建应用,本篇博文中会尽可能地涵盖这些要点.Android的开发者在选择一个合适的HTTP库时需要考虑很多的要点,譬如在使用Apache Client或者HttpURLConnection时可能会考虑: 能够取消现有的网络请求 能够并发请求 连接池能够

说说React,Flux,Reray和GraghQL

前几天看到同事转发的<ReactEurope Conf 参会感想>,这篇文章讲的react的一些理念感觉有些道理,但我对react最终能很好的实现learn once, write everywhere还是持怀疑态度,毕竟世界是多样的,Apple的iOS(扁平化风格),Google的Android各自有自己的UI规范(Material Design和AngularJs Material Design ),即使React的理念很好,在别人的地盘上也不一定能弄出多大成果.但在Web前端领域,Rea

Android开发Tips-1

打算记录一些自己在开发过程中遇到的一些技巧性代码,方便以后遇到相似功能时能够快速的找到,那就从这里开始吧. 1,如何截取当前屏幕(不包括当前Activity的Title)并分享: a,获取当前Activity的根视图: 1 View rootView = getWindow().getDecorView().findViewById(android.R.id.content); 或者: 1 View rootView = findViewById(android.R.id.content); 或