本書首先講解了函數(shù)式響應(yīng)式編程的概念,包括Observables、Subject、Processor 等,以及RxJava的優(yōu)點(diǎn)和用途。然后講解了RxJava 中必不可少的操作符,包括創(chuàng)建操作符、變換操作符、過濾操作符、條件操作符、布爾操作符、合并操作符和連接操作符。接著詳細(xì)介紹了RxJava 的線程操作及線程模型,用大量的實(shí)例,講解了RxJava 在Android 上和在Java 后端的使用。最后,介紹了Java 8 的函數(shù)式編程的特性,以及對(duì)未來(lái)編程方式的展望。本書適合Android 開發(fā)工程師、Java 后端開發(fā)工程師,以及對(duì)函數(shù)響應(yīng)式編程、感興趣的IT 從業(yè)人員。
沈哲,目前在魔窗,負(fù)責(zé)移動(dòng)端團(tuán)隊(duì)研發(fā)魔窗的sdk。曾在京東工作三年,負(fù)責(zé)過京東旅行郵輪團(tuán)隊(duì)的后臺(tái)建設(shè)。后轉(zhuǎn)崗到京東到家,負(fù)責(zé)上海的移動(dòng)端團(tuán)隊(duì)。
第1 章 RxJava 簡(jiǎn)介 1
1.1 你需要了解的函數(shù)響應(yīng)式編程 1
1.2 RxJava 簡(jiǎn)介 4
1.3 為何選擇RxJava 6
1.4 RxJava 能做什么 10
1.5 RxJava 2 的Hello World 11
1.6 小結(jié) 12
第2 章 RxJava 基礎(chǔ)知識(shí) . 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 小結(jié) 63
第3 章 創(chuàng)建操作符 64
3.1 create、just 和from . 65
3.2 repeat 72
3.3 defer、interval 和timer 75
3.4 小結(jié) 80
第4 章 RxJava 的線程操作 . 81
4.1 調(diào)度器(Scheduler)種類 81
4.2 RxJava 線程模型 83
VI ∣ RxJava 2.x 實(shí)戰(zhàn)
4.3 Scheduler 的測(cè)試 . 99
4.4 小結(jié) 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 小結(jié) 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 小結(jié) 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 小結(jié) 183
第8 章 RxJava 的背壓 184
8.1 背壓 184
8.2 RxJava 2.x 的背壓策略 188
8.3 小結(jié) 193
第9 章 Disposble 和Transformer 的使用 194
9.1 Disposable 194
9.2 RxLifecycle 和AutoDispose 196
9.3 Transformer 在RxJava 中的使用 198
9.4 小結(jié) 213
第10 章 RxJava 的并行編程 . 214
10.1 RxJava 并行操作 214
10.2 ParallelFlowable . 221
10.3 小結(jié) 225
第11 章 RxBinding 的使用 226
11.1 RxBinding 簡(jiǎn)介 226
11.2 RxBinding 使用場(chǎng)景 229
11.3 RxBinding 結(jié)合RxPermissions 的使用 243
11.4 RxBinding 使用的注意點(diǎn) 249
11.5 小結(jié) 251
第12 章 RxAndroid 2.x 和Retrofit 的使用 . 252
12.1 RxAndroid 2.x 簡(jiǎn)介 . 252
12.2 Retrofit 簡(jiǎn)介 . 257
12.3 Retrofit 與RxJava 的完美配合 . 258
12.4 小結(jié) 272
第13 章 開發(fā)EventBus 274
13.1 傳統(tǒng)的EventBus 274
13.2 開發(fā)一個(gè)新的EventBus(一) 276
13.3 開發(fā)一個(gè)新的EventBus(二) 285
13.4 開發(fā)一個(gè)新的EventBus(三) 287
13.5 開發(fā)一個(gè)新的EventBus(四) 294
13.6 小結(jié) 302
第14 章 使用RxJava 封裝Httpclient 4.5 303
14.1 HttpClient 的介紹 303
14.2 使用RxJava 進(jìn)行重構(gòu) . 309
14.3 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片爬蟲 317
14.4 小結(jié) 323
第15 章 Spring Boot 和RxJava 2 . 325
15.1 模擬Task 任務(wù) . 325
15.2 構(gòu)建一個(gè)給爬蟲使用的代理IP 池 . 335
15.3 小結(jié) 347
第16 章 Java 8 的函數(shù)式編程 348
16.1 Java 8 的新變化 .348
16.2 函數(shù) 349
16.3 Lambda 表達(dá)式 352
16.4 Java 8 新增的Stream .355
16.5 函數(shù)的柯里化 364
16.6 新的異步編程方式CompletableFuture .367
16.7 小結(jié) 388
第17 章 Kotin 和RxJava 389
17.1 Kotlin 簡(jiǎn)介 .389
17.2 使用Kotlin 來(lái)封裝圖像框架 393
17.3 小結(jié) 405
第18 章 展望未來(lái) 406
18.1 期待已久的Java 9 406
18.2 其他的Reactive Streams 項(xiàng)目 . 408
18.3 小結(jié) 410
附錄A RxJava 常用的操作符列表 411
附錄B .RxJava 中常用的library 416