RxJava Essentials CN
目錄
说明
RX - 从 .NET 到 RxJava
微软响应式扩展
来到Java世界 - Netflix RxJava
RxJava的与众不同之处
总结
为什么是Observables?
观察者模式
你什么时候使用观察者模式?
RxJava观察者模式工具包
Observable
Subject = Observable + Observer
总结
向响应式世界问好
启动引擎
工具
我们的第一个Observable
从列表创建一个Observable
再多几个例子
总结
过滤Observables
过滤序列
获取我们需要的数据
有且仅有一次
First and last
Skip and SkipLast
ElementAt
0
1
1.1
1.2
1.3
1.4
2
2.1
2.2
2.3
2.4
2.5
2.6
3
3.1
3.2
3.3
3.4
3.5
3.6
4
4.1
4.2
4.3
4.4
4.5
4.6
2
RxJava Essentials CN
Sampling
Timeout
Debounce
总结
变换Observables
*map家族
GroupBy
Buffer
Window
Cast
总结
组合Observables
Merge
Zip
Join
combineLatest
And,Then和When
Switch
StartWith
总结
Schedulers-解决Android主线程问题
StrictMode
避免阻塞I/O的操作
Schedulers
非阻塞I/O操作
SubscribeOn and ObserveOn
处理耗时的任务
执行网络任务
总结
与REST无缝结合-RxJava和Retrofit
4.7
4.8
4.9
4.10
5
5.1
5.2
5.3
5.4
5.5
5.6
6
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
7
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
8
3
RxJava Essentials CN
项目目标
Retrofit
App架构
创建Activity类
创建RecyclerView Adapter
总结
8.1
8.2
8.3
8.4
8.5
8.6
4
RxJava Essentials CN
RxJava Essentials 中文翻译版
本书是对Ivan.Morgillo所写一书的中文翻译版本,仅供交流学习使用,严禁商业用
途。
本书内容有
1.RX-from .NET to RxJava
本章带你进入reactive的世界。我们会比较reactive 方法和传统方法,进而探索
它们之间的相似和不同的地方。
2.Why Observables?
本章会对观察者模式做一个概述,如何实现它以及怎样用RxJava来进行扩展,
被观察者是什么,以及被观察者如何与迭代联系到一起的。
3.Hello Reactive World
本章会利用我们所学的知识来创建第一个reactive Android应用。
说明
5
RxJava Essentials CN
4.Filtering Observables
本章我们会研究Observable序列的本质:filtering.我们也将学到如何从一个发出
的Observable中选取我们想要的值,如何获得一个有限的数值,如何处理溢出
的场景,以及更多有用的技巧。
5.Transforming Observables
本章将讲述如何通过变换Observable序列来创建出我们所需要的序列。
6.Combining Observables
本章将研究与函数结合,同时也会学到当创建我们想要的Observable时又如何
与多个Observable协同工作。
7.Schedulers-Defeating the Android MainThread
Issue
本章将介绍如何使用RxJava Schedulers 来处理多线程和并发编程。我们也将
用reactive的方式来创建网络操作、内存访问、耗时处理。
8.REST in peace-RxJava and Retrofit
本章教会你如何让Square公司的Retrofit和RxJava结合来一起使用,来创建一
个更高效的REST客户端程序。
学习这本书你需要做的:
为了能够运行书中的例子,你需要一个标准的Android开发环境:
Android Studio 或 Intellij IDEA
Android SDK
Java SDK
说明
6
RxJava Essentials CN
作为一个纯粹的Java开发者,当你接触RxJava时,很明显你需要一个你喜欢Java
编辑器和一个标准的Java JDK 环境。这本书中的一些图表来自
http://rxmarbles.com 和 http://reactivex.io。
这本书适合哪些人看
如果你是一名有经验的Java开发者,reactive编程将会在后端系统中给你一种新的
学习扩展和并发的方式,而这不需要更换开发语言。这本书将帮助你学习RxJava的
核心方面,也能帮助你克服Android平台局限性从而创建一个基于事件驱动的,响应
式的,流畅体验的Android应用。
一些约定
在这本书中,你会发现许多用来区分不同信息的文本样式,这列举这些样式的一些
例子和对他们释义的说明。
以下列举了些文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径
名、伪造的URL、用户输入、Twitter handles :“正如你看到的那样:zip()有三个参
数:两个Observable和一个Func2”
如下面的一块代码:
public Observable> getMostPopularSOusers(int howmany){
return mStackExchangeService
.getMostPopularSOusers(howmany)
.map(UsersResponse::getUsers)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
当我们想对代码块的某一部分引起你的注意时,会在对应的那一行或列设置为粗体
说明
7
RxJava Essentials CN
public Observable> getMostPopularSOusers(int howmany){
return mStackExchangeService
.getMostPopularSOusers(howmany)
.map(UsersResponse::getUsers) //也就是这句加粗显示
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
新的项目和重要的词语都会以粗体显示。你在屏幕看到的字,例如在菜单或者对话
框,会以类似这样的形式出现在文本中:“We will just need a fancy progress bar
and a DOWNLOAD button.
Note
类似这样的是警告或者出现在框中的重要提示。
Tip 类似这样的是提示和技巧
读者反馈
发送邮件到 feedback@packtpub.com 在你的邮件主题中要提到书的标题。
如果你有擅长的话题并且你对写作感兴趣或者想出书的话,可以看我们作者指
南:http://www.packtpub.com/authors
下载样例代码
你可以从你在http://www.packtpub.com的账户中下载所有你购买Packt 出版的图书
的样例代码,如果你从别处购买这本书的话,你可以访
问:http://www.packtpub.com/support 注册并将文件用附件直接发给你。
说明
8