- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在安卓上使用RxJava
在安卓上使用RxJava
如果做过Android(和Java)的开发,很有可能已经听说过RxJava了。RxJava是由Netflix开发的响应式扩展(Reactive Extensions)的Java实现。引用 HYPERLINK /en-us/data/gg577609.aspx \t _blank MSDN上对它的定义,Reactive Extensions是这样一个第三方库:它结合了可观察集合和LINQ式查询以达到异步和基于事件的编程效果。Netflix将这个库托管到了Github上,支持Java6以上的版本并且使它可以用于Android App开发。
本篇是介绍RxJava和Android的系列文章的第一篇,将会介绍如何在Android中使用RxJava observables(基于Square的Retrofit组件)创建REST API客户端。
我们从添加所需的库文件开始。如果你用Maven的话,只需将下面的dependencies(依赖库)加到pom.xml中即可:
1
2
3
4
5
6
7
8
9
10dependency
????groupIdcom.squareup.retrofit/groupId
????artifactIdretrofit/artifactId
????version1.2.2/version
/dependency
dependency
????groupIdflix.rxjava/groupId
????artifactIdrxjava-android/artifactId
????version0.14.6/version
/dependency在本文中,我们将用气象地图开放平台(OpenWeatherMap) API作为演示示例。 HYPERLINK / \t blank_ OpenWeatherMap是一个免费的天气数据API,非常易于配置和使用,调用时只需传入位置信息(城市名或者是地理坐标)作为参数即可,具体效果请参见这个 HYPERLINK /data/2.5/weather?q=Budapest,hu \t _blank 示例。它默认传输的是JSON格式的数据(但也可以配置为XML或HTML格式)。精度和温度单位也是可以配置的,更多详情请看 HYPERLINK /API \t _blank 这里。
通常要实现调用一个API需要如下这几个步骤(每个步骤都有一堆公式化代码):
创建所需的模型类(必要时,添加上注解)。
实现请求—回应管理的网络层代码,并带错误处理。
用后台线程实现请求调用(一般是用异步任务的形式实现),用一个回调函数(Callback Function)来实现在UI线程上呈现回应信息。
创建模型类
第一步我们可以依靠一些类似 HYPERLINK / \t _blank jsonschema2pojo的JSON-POJO生成工具(半)自动化完成。OpenWeather API的模型类如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57public class WeatherData {
?
????public Coordinates coord;
????public Local sys;
????public ListWeather weathers;
????public String base;
????public Main main;
????public Wind wind;
????public Rain rain;
????public Cloud clouds;
????public long id;
????public long dt;
????public String name;
????public int cod;
?
????public static class Coordinates {
????????public double lat;
????????public double lon;
????}
?
????public static class Local {
????????public String country;
????????public long sunrise;
????????public long sunset;
????}
?
????public static class
您可能关注的文档
- 同学毕业照摄影方法.doc
- 名人名言-伊丽莎白泰勒.doc
- 合资经营小企业协议.doc
- 同等学力基本词汇2000.doc
- 吉林燕窝怎样辨别真假.doc
- 名侦探柯南人物感人语录.doc
- 名人名言摘抄大全1.docx
- 吊装作业安全的管理规定.doc
- 名句学生版修正最终版.doc
- 名句名篇背诵默写练习.doc
- 国开景区管理作业2试题及答案.pdf
- 国开景区管理作业1-4试题及答案.pdf
- 河南开放大学本科《地域文化(本)》作业练习1-3试题及答案.pdf
- 2024年大型游乐设施操作证考试题库及答案很全.pdf
- 2024年门座式起重机司机考试题库及答案.pdf
- 2022-2023学年河北省衡水市武强中学高二(下)期末数学试卷【答案版】.docx
- 2022-2023学年河北省保定市崇德实验中学高二(下)期末数学试卷【答案版】.docx
- 江西省2017年中小学教师招聘考试高中化学试卷及答案.docx
- 2024年河北省八年级中考生物真题(解析版).docx
- 2024年南阳市社会保险中心(唐河县企业养老保险分中心)(参公)一级科员招录1人《行政职业能力测验》高频考点、难点(答案详解版).docx
文档评论(0)