位置: 编程技术 - 正文

Google Volley使用之基础(googlevoice使用教程)

编辑:rootadmin
开源项目链接

推荐整理分享Google Volley使用之基础(googlevoice使用教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:googlevoice使用教程,google vice,google vice,googlevoice怎么使用,googlevoice怎么使用,google voicw,google voice,googlevoice使用教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Volley Android Developer文档

Volley主页: clone GitHub Demo:在GitHub主页搜索Volley会有很多,不过建议阅读Android Developer文档。

背景知识

啥是Google Android Volley?

一句简单的回答:Volley就是集AsyncHttpClient和Universal-Image-Loader优点于一身的一个Google亲儿子开源框架。

Google在I/O 大会上发布了Volley。它是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。其最明显的一个优点就是特别适合数据量不大但是通信频繁的场景,最明显的缺点就是大数据传输表现的很糟糕。

Volley提供了如下的便利功能:

JSON数据和图像等的异步下载;网络请求排序(scheduling);网络请求优先级处理;缓存;多级别取消请求;与Activity生命周期联动(Activity结束时同时取消所有网络请求);

Volley对APP的版本要求是android:minSdkVersion为8。

使用newRequestQueue和StringRequest

Volley的用法非常简单,这里使用官方例子发起一条HTTP GET请求,然后接收HTTP响应。首先需要获取到一个RequestQueue对象,可以调用如下方法获取到:

这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。 RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。

StringRequest的构造函数需要传入四个参数(有一个三个参数的构造函数,默认是GET方式),第一个参数就是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。将这个StringRequest对象添加到RequestQueue里面就可以了。使用Volley时您可以从任何线程开始请求,但响应始终传递到了主线程上。

如上代码就示范了一个简单的HTTP GET请求。

既然HTTP GET的例子这么easy搞定,是不是该再整一个POST的例子呢?

POST有点曲线救国,因为StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest父类Request的getParams()方法来获取POST参数,所以我们只需要重写StringRequest的getParams()方法,在这里设置POST参数就可以了,代码如下所示:

如上代码就示范了一个简单的HTTP POST请求。

使用newRequestQueue和JsonRequest

和StringRequest基本上差不多,JsonRequest也是继承自Request类的,不过JsonRequest是一个抽象类,我们无法直接创建它的实例。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest。所以对于JSON&#;式的数据基本没啥压力了,他都帮你搞完了,如下展示一个简单例子:

如上就是一个Volley的JSON HTTP的简单例子咯!

取消Request

要取消一个请求,调用cancel()即可。一旦取消,Volley保证你的响应处理程序将永远不会被调用。这意味着在实践中,你可以取消所有待定的请求在你Activity的onStop()方法中,你不必乱抛垃圾的响应处理程序或者检查getActivity() == NULL,无论onSaveInstanceState()是否已经被调用。

Google Volley使用之基础(googlevoice使用教程)

你发出去的请求必须要自己保证是可控的,在这里还有一个更简单的方法:你可以标记发送的每个请求对象,然后你可以使用这个标签来提供请求取消的范围。

这里是一个使用字符串&#;标签的例子:

现在是不是发现Volley灰常简单了呢!就是举一反三的操作。

好了,不扯了,网络HTTP的Volley简单使用先说到这里。

使用newRequestQueue和ImageRequest

ImageRequest也是继承自Request的,因此它的用法和上面的也是基本相同的。

ImageRequest的构造函数有六个参数,第一个参数是图片URL;第二个参数是图片请求成功的回调;第三第四个参数分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大&#;,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩;第五个参数用于指定图片深度;第六个参数是图片请求失败的回调。

使用newRequestQueue和ImageLoader

ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest来实现的,不过ImageLoader明显要比ImageRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。

由于ImageLoader已经不是继承自Request,所以它的用法变为如下:

创建一个RequestQueue对象。创建一个ImageLoader对象。获取一个ImageListener对象。调用ImageLoader的get()方法加载网络上的图片。

如上简单使用了ImageLoader进行图片加载。

现在进行升级,实现ImageCache接口如下:

这里这么搞一下就简单的把ImageLoader优势展示了一把。

使用newRequestQueue和NetworkImageView

NetworkImageView是一个继承自ImageView的View控件,拥有ImageView控件的所有功能,并且在ImageView的基础上加入了加载网络图片的功能。NetworkImageView控件的用法分为以下五步:

创建一个RequestQueue对象。创建一个ImageLoader对象。在布局文件中添加一个NetworkImageView控件。在代码中获取该控件的实例。设置要加载的图片地址。

这里以XML文件结合java的方式演示:

如上演示了Volley的一些基本使用特性和方法。

Volley请求管理方式

在Android Developer上看到的这幅图:

RequestQueue会维护一个缓存调度线程(cache线程)和一个网络调度线程池(net线程),当一个Request被加到队列中的时候,cache线程会把这个请求进行筛选:如果这个请求的内容可以在缓存中找到,cache线程会亲自解析相应内容,并分发到主线程(UI)。如果缓存中没有,这个request就会被加入到另一个NetworkQueue,所有真正准备进行网络通信的request都在这里,第一个可用的net线程会从NetworkQueue中拿出一个request扔向服务器。当响应数据到的时候,这个net线程会解析原始响应数据,写入缓存,并把解析后的结果返回给主线程。

【工匠若水 继续阅读《Google Volley使用之自定义》

android使用红杏代理更新sdk 打开eclipse设置界面双击http,弹出对话框,输入Host:hx.gy,Port:打开AndroidSDKManager,然后打开设置界面,在mac上使用cmd,快捷键打开填入信息之后重启

android 获取手机信息工具类 packagecom.yqy.yqy_listviewheadview;importandroid.content.Context;importandroid.telephony.TelephonyManager;importandroid.util.Log;/***获取手机信息工具类br*内部已经封装了打印功能,

android 按钮置灰效果 通过设置可点击和颜色实现packagecom.yqy.yqy_button;importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.Menu;importandroid.view.View;importandroid.vi

标签: googlevoice使用教程

本文链接地址:https://www.jiuchutong.com/biancheng/387445.html 转载请保留说明!

上一篇:Android 网络通信框架Volley简介(Google IO 2013)(android通信机制)

下一篇:android使用红杏代理更新sdk

  • 收到其他与经营活动有关的现金是什么意思
  • 如何在天猫平台抢茅台
  • 购买福利用品
  • 个人所得税申报密码如何设置
  • 个人接受现金捐赠的例子
  • 新公司注册资金需要实缴吗
  • 委托加工物资两种情况例题
  • 预提费用下月要冲回吗
  • 预收账款和预付账款什么时候用
  • 股东捐赠给企业资金保壳
  • 去年多计提的生育津贴
  • 房地产企业收到预收款如何纳税
  • 分派现金股利会计科目
  • 什么费用计入什么科目
  • 已经给员工交了社保能退吗
  • 营改增公告
  • 2016年营改增后购买氧气乙炔税率是多少
  • 会计七月份忙吗
  • 销售软件产品
  • 异地预缴企业所得税会计分录
  • 预收款没有发票怎么入账
  • 转让房产缴纳增值税可以用留底税吗
  • 会计审核票据如何签字
  • 生物资产全套账务处理
  • 固定资产清查表
  • 个人所得税的征收
  • win11怎么设置桌面显示我的电脑
  • 怎么安装Win7系统
  • linux系统中将加密过的密码放到什么文件中
  • CENTOS7安装报错
  • 本期进项税额转出会计分录
  • 什么是资产负债率,如何计算
  • Chon湖上空的低空云,苏格兰特罗萨克斯 (© Alistair Dick/Alamy)
  • 固定资产清理的借贷方向表示什么
  • 股东年终利润分录怎么写
  • php__call
  • 螺旋状芦荟 (© David Madison/Getty Images)
  • oauth2 sso单点登录
  • 增值税一般纳税人登记管理办法
  • nodejs c扩展
  • 职工教育经费能结转几年
  • php连接mysql8.0
  • python累加求和代码,直到最后一项小于10^-6
  • 政府奖励需要缴纳增值税吗
  • 公司银行销户钱转到哪里去
  • 专项应付款转资本公积需要缴纳所得税
  • 物流公司卖车合法么
  • 以前年度无形资产摊销
  • 接受捐赠收入作为广告费扣除基数吗
  • 企业所得税汇算表
  • 售后回租如何做会计处理
  • 支付上个月运费
  • 企业为职工租房合法吗
  • 长期股权投资损益调整
  • 出口发票开具普通发票开具汇率是根据什么订?
  • 管理费用和销售费用属于什么科目
  • 向法人借款凭证摘要怎么写
  • 普通发票的开具办法是?
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • 公开发行企业债券,发行人累计债券余额
  • 数据库中自动增长
  • 制作winxp启动u盘和安装盘
  • ssh直接输入密码 linux
  • win7系统计算机管理打不开
  • win7访问共享文件夹没有权限访问
  • 使用shell脚本实现自动化软件部署
  • python3解析json
  • python的模块和包
  • selenium 与 chrome 进行qq登录并发邮件操作实例详解
  • python中random模块用法
  • 手把手教怎么说
  • jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
  • jquery手册手机版
  • 对于初学者的鼓励
  • 税务核销
  • 企业自建房如何缴税
  • 价税分离计算公式
  • 进口小麦关税税率是多少
  • 陕西省网上税务局怎么报国税(陕西税务局官网申报)
  • 山东地税app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设