内容简介
本书首先讲解了函数式响应式编程的概念,包括Observables、Subject、Processor 等,以及RxJava的优点和用途。然后讲解了RxJava 中必不可少的操作符,包括创建操作符、变换操作符、过滤操作符、条件操作符、布尔操作符、合并操作符和连接操作符。接着详细介绍了RxJava 的线程操作及线程模型,用大量的实例,讲解了RxJava 在Android 上和在Java 后端的使用。最后,介绍了Java 8 的函数式编程的特性,以及对未来编程方式的展望。本书适合Android 开发工程师、Java 后端开发工程师,以及对函数响应式编程、感兴趣的IT 从业人员。
目录
第1 章 RxJava 简介 1
1.1 你需要了解的函数响应式编程 1
1.2 RxJava 简介 4
1.3 为何选择RxJava 6
1.4 RxJava 能做什么 10
1.5 RxJava 2 的Hello World 11
1.6 小结 12
第2 章 RxJava 基础知识 . 13
2.1 Observable 13
2.2 Hot Observable 和Cold Observable 20
2.3 Flowable . 33
2.4 Single、Completable 和Maybe . 34
2.5 Subject 和Processor . 48
2.6 小结 63
第3 章 创建操作符 64
3.1 create、just 和from . 65
3.2 repeat 72
3.3 defer、interval 和timer 75
3.4 小结 80
第4 章 RxJava 的线程操作 . 81
4.1 调度器(Scheduler)种类 81
4.2 RxJava 线程模型 83
VI ∣ RxJava 2.x 实战
4.3 Scheduler 的测试 . 99
4.4 小结 106
第5 章 变换操作和过滤操作符 107
5.1 map 和flatMap . 108
5.2 groupBy 112
5.3 buffer 和window 114
5.4 first 和last 121
5.5 take 和takeLast 125
5.6 skip 和skipLast 131
5.7 elementAt 和ignoreElements . 135
5.8 distinct 和filter . 139
5.9 debounce . 142
5.10 小结 144
第6 章 条件操作符和布尔操作符 145
6.1 all、contains 和amb 146
6.2 defaultIfEmpty 150
6.3 sequenceEqual 152
6.4 skipUtil 和skipWhile . 154
6.5 takeUtil 和takeWhile . 156
6.6 小结 159
第7 章 合并操作符与连接操作符 160
7.1 merge 和zip . 161
7.2 combineLatest 和join . 167
7.3 startWith 171
7.4 connect、push 和refCount 174
7.5 replay 180
7.6 小结 183
第8 章 RxJava 的背压 184
8.1 背压 184
8.2 RxJava 2.x 的背压策略 188
8.3 小结 193
第9 章 Disposble 和Transformer 的使用 194
9.1 Disposable 194
9.2 RxLifecycle 和AutoDispose 196
9.3 Transformer 在RxJava 中的使用 198
9.4 小结 213
第10 章 RxJava 的并行编程 . 214
10.1 RxJava 并行操作 214
10.2 ParallelFlowable . 221
10.3 小结 225
第11 章 RxBinding 的使用 226
11.1 RxBinding 简介 226
11.2 RxBinding 使用场景 229
11.3 RxBinding 结合RxPermissions 的使用 243
11.4 RxBinding 使用的注意点 249
11.5 小结 251
第12 章 RxAndroid 2.x 和Retrofit 的使用 . 252
12.1 RxAndroid 2.x 简介 . 252
12.2 Retrofit 简介 . 257
12.3 Retrofit 与RxJava 的完美配合 . 258
12.4 小结 272
第13 章 开发EventBus 274
13.1 传统的EventBus 274
13.2 开发一个新的EventBus(一) 276
13.3 开发一个新的EventBus(二) 285
13.4 开发一个新的EventBus(三) 287
13.5 开发一个新的EventBus(四) 294
13.6 小结 302
第14 章 使用RxJava 封装Httpclient 4.5 303
14.1 HttpClient 的介绍 303
14.2 使用RxJava 进行重构 . 309
14.3 实现一个简单的图片爬虫 317
14.4 小结 323
第15 章 Spring Boot 和RxJava 2 . 325
15.1 模拟Task 任务 . 325
15.2 构建一个给爬虫使用的代理IP 池 . 335
15.3 小结 347
第16 章 Java 8 的函数式编程 348
16.1 Java 8 的新变化 .348
16.2 函数 349
16.3 Lambda 表达式 352
16.4 Java 8 新增的Stream .355
16.5 函数的柯里化 364
16.6 新的异步编程方式CompletableFuture .367
16.7 小结 388
第17 章 Kotin 和RxJava 389
17.1 Kotlin 简介 .389
17.2 使用Kotlin 来封装图像框架 393
17.3 小结 405
第18 章 展望未来 406
18.1 期待已久的Java 9 406
18.2 其他的Reactive Streams 项目 . 408
18.3 小结 410
附录A RxJava 常用的操作符列表 411
附录B .RxJava 中常用的library 416
前言/序言
前 言
编写这本书的目的
笔者从2015 年开始关注RxJava 以及响应式编程,当时网上的资料很少。三年后的今天,我们可以看到越来越多的App 都在使用Rx 相关的技术。在Java 后端,Spring 5 也开始支持响应式编程。在开源的技术社区里,Rx、响应式编程、函数式编程都是热门话题。我们公司开发的App,笔者也会强制大家使用RxJava 或者RxSwfit。本书通过完整的体系介绍了RxJava 的方方面面。
对于不了解响应式编程的开发者,RxJava 的入门可能会有一些难度。笔者结合自身的学习以及使用情况,尽可能使用通俗易懂的讲解方式带领大家学习RxJava。同时,本书还附有丰富的例子,从Android 开发到Java 后端的开发,相信能够让大家感受到RxJava 的魅力。
读者对象
1)Android 开发工程师。
2)Java 后端开发工程师。
3)对函数式编程、响应式编程感兴趣的IT 从业人员。
如何阅读本书
本书共分为18 章。
第1 章讲述了RxJava 的来龙去脉,以及什么是响应式编程、什么是函数式编程。
第2 章至第7 章讲述了RxJava 的基础概念,以及RxJava 常用的操作符。
第8 章至第10 章为RxJava 的高级部分。
第11 章至第12 章为RxAndroid 的使用篇,介绍了常用的RxBinding、Retrofit 等框架。
第13 章至第15 章为RxJava 的实战篇,介绍了如何实现一个基于RxJava 的Event Bus框架,以及Spring Boot 如何与RxJava 相结合使用。
第16 章至第18 章介绍了Java 8 函数式编程的特性和Kotlin,并展望未来。
勘误和支持
本书相关例子的源码都在GitHub 上, 地址: https://github.com/fengzhizi715/RxJavaInAction。
由于笔者水平有限,编写本书时难免会出现错误或者纰漏,恳请读者批评指正。读者可以关注笔者的公众号与笔者进行互动。或者通过邮箱:fengzhizi715@126.com,有关本书的任何问题都可以反馈给笔者,笔者期待与您的技术交流。
致谢
首先要感谢我的家人,最主要是感谢我的妻子。在写书期间,恰逢儿子的出生,她承担了绝大部分照顾儿子的责任。
感谢公司的支持与同事的帮助,特别是刘志强帮我整理了很多RxJava 相关的资料,以及对本书部分章节进行了试读,并提出意见。
感谢www.bsfans.com 罗波同学提供UI 支持。
RxJava 2.x 实战 下载 mobi epub pdf txt 电子书 格式