作 譯 者: | |||||||||
| |||||||||
所屬分類: >> >> 網絡與互聯網 | |||||||||
紙質書定價:¥49.0 |
響應式編程是一種基於異步數據流概念的編程模式,在開發手機App、Web App時,要想保證對用戶請求的實時響應,給用戶帶來流暢的體驗,響應式編程是一個不錯的選擇。RxJava則是這種編程模式的Java實現。本書主要介紹如何使用RxJava進行響應式編程。全書一共6章,從響應式編程與RxJava的概念,到RxJava的操作符和源碼,以及各種Scheduler的特點和適用場景,均做瞭較細緻的講解。本書還用一章的篇幅給齣瞭幾個RxJava的實用案例,幫助讀者理解概念,上手操作。本書適閤RxJava的初學者,以及對RxJava有初步瞭解想要進一步深入學習的讀者閱讀。
第1章 走進RxJava的世界 .......................................................................................................... 1
1.1 響應式編程.......................................................................................................................... 1
1.2 什麼是RxJava................................................................................................................ 4
1.3 Observable和Subscriber ............................................................................................... 5
1.3.1 Single:單個數據的生産者 ........................................................................................... 8
1.3.2 Completable:單個事件的生産者 .................................................................................. 9
1.4 在Android工程中引入RxJava .................................................................................. 11
第2章 RxJava中的操作符 ..................................................................................................... 12
2.1 創建Observable的操作符 .......................................................................................... 12
2.1.1 range ........................................................................................................................... 13
2.1.2 defer和just ................................................................................................................. 13
2.1.3 from ............................................................................................................................ 16
2.1.4 interval ........................................................................................................................ 17
2.1.5 repeat和timer ............................................................................................................. 19
2.2 轉化Observable的操作符 .......................................................................................... 21
2.2.1 buffer .......................................................................................................................... 21
2.2.2 flatMap ....................................................................................................................... 23
2.2.3 groupBy ...................................................................................................................... 25
2.2.4 map............................................................................................................................ 28
2.2.5 cast ............................................................................................................................. 29
2.2.6 scan ............................................................................................................................ 31
2.2.7 window ....................................................................................................................... 32
2.3 過濾操作符 .................................................................................................................. 35
2.3.1 debounce ..................................................................................................................... 35
2.3.2 distinct ........................................................................................................................ 39
2.3.3 elementAt .................................................................................................................... 40
2.3.4 filter ............................................................................................................................ 41
2.3.5 first和last ................................................................................................................... 43
2.3.6 skip和take,skipLast和takeLast ................................................................................ 45
2.3.7 sample和throttleFirst .................................................................................................. 46
2.4 組閤操作符 .................................................................................................................. 48
2.4.1 combineLatest .............................................................................................................. 48
2.4.2 join和groupJoin ......................................................................................................... 51
2.4.3 merge和mergeDelayError............................................................................................ 55
2.4.4 startWith...................................................................................................................... 58
2.4.5 switch ......................................................................................................................... 59
2.4.6 zip和zipWith .............................................................................................................. 61
2.5 錯誤處理操作符 .......................................................................................................... 64
2.5.1 onErrorReturn .............................................................................................................. 64
2.5.2 onErrorResumeNext ..................................................................................................... 66
2.5.3 onExceptionResumeNext .............................................................................................. 67
2.5.4 retry ............................................................................................................................ 70
2.6 輔助操作符 .................................................................................................................. 72
2.6.1 delay ........................................................................................................................... 72
2.6.2 do ............................................................................................................................... 74
2.6.3 materialize和dematerialize .......................................................................................... 78
2.6.4 subscribeOn和observeOn ............................................................................................ 80
2.6.5 timeInterval和timeStamp ............................................................................................ 82
2.6.6 timeout ........................................................................................................................ 84
2.6.7 using ........................................................................................................................... 87
2.7 條件操作 ...................................................................................................................... 90
2.7.1 all ............................................................................................................................... 90
2.7.2 amb............................................................................................................................ 92
2.7.3 contains ....................................................................................................................... 93
2.7.4 isEmpty ....................................................................................................................... 94
2.7.5 defaultIfEmpty ............................................................................................................. 95
2.7.6 sequenceEqual ............................................................................................................. 97
2.7.7 skipUntil和skipWhile ................................................................................................. 98
2.7.8 takeUntil和takeWhile ............................................................................................... 100
2.8 聚閤操作符 ................................................................................................................ 102
2.8.1 concat ....................................................................................................................... 102
2.8.2 count ......................................................................................................................... 104
2.8.3 reduce ....................................................................................................................... 105
2.8.4 collect ....................................................................................................................... 106
2.9 與Connectable Observable相關的操作符 ............................................................... 107
2.9.1 publish和connect ...................................................................................................... 108
2.9.2 refCount .................................................................................................................... 110
2.9.3 replay ........................................................................................................................ 111
2.10 自定義操作符 .......................................................................................................... 114
2.10.1 lift ........................................................................................................................... 115
2.10.2 compose .................................................................................................................. 117
第3章 使用Scheduler進行綫程調度 ................................................................................. 119
3.1 什麼是Scheduler ....................................................................................................... 119
3.2 Scheduler的類型 ....................................................................................................... 121
3.2.1 computation ............................................................................................................... 121
3.2.2 newThread ................................................................................................................. 122
3.2.3 io .............................................................................................................................. 122
3.2.4 immediate .................................................................................................................. 123
3.2.5 trampoline ................................................................................................................. 123
3.2.6 from .......................................................................................................................... 123
3.3 總結 ............................................................................................................................ 125
第4章 RxJava的實現原理 ................................................................................................... 126
4.1 數據的發送和接收 .................................................................................................... 126
4.1.1 創建Observable的過程 ............................................................................................. 127
4.1.2 訂閱的過程 ............................................................................................................... 128
4.2 操作符的實現 ............................................................................................................ 130
4.2.1 lift的工作原理 .......................................................................................................... 130
4.2.2 map的工作原理 ........................................................................................................ 132
4.2.3 flatMap的工作原理 ................................................................................................... 135
4.2.4 merge的工作原理 ..................................................................................................... 136
4.2.5 concat的工作原理 ..................................................................................................... 139
4.3 Scheduler的工作原理 ............................................................................................... 144
4.3.1 Scheduler源碼 .......................................................................................................... 144
4.3.2 subscribeOn的工作原理 ............................................................................................ 152
4.3.3 observeOn的工作原理 .............................................................................................. 156
第5章 RxJava的應用實例 ................................................................................................... 161
5.1 計算π的值 ................................................................................................................ 161
5.2 圖片的三級緩存 ........................................................................................................ 165
5.2.1 內存緩存 .................................................................................................................. 167
5.2.2 外存緩存 .................................................................................................................. 169
5.2.3 網絡緩存 .................................................................................................................. 172
5.2.4 緩存管理 .................................................................................................................. 173
5.2.5 封裝.......................................................................................................................... 176
5.2.6 運行測試 .................................................................................................................. 178
5.3 結閤Retrofit和OkHttp訪問網絡 ............................................................................ 181
5.3.1 卡片類的定義 ........................................................................................................... 181
5.3.2 配置OkHttp .............................................................................................................. 183
5.3.3 配置Retrofit.............................................................................................................. 186
5.4 使用RxLifecycle避免內存泄漏 ............................................................................... 189
5.4.1 修改demo工程 .................................................................................................... 189
5.4.2 綁定其他生命周期 ................................................................................................ 191
5.5 使用RxBinding綁定各種View事件....................................................................... 193
5.5.1 綁定點擊事件 ...................................................................................................... 194
5.5.2 綁定TextWatcher .................................................................................................. 196
5.5.3 綁定OnPageChangeListener ................................................................................... 197
第6章 RxJava 2的改進 ....................................................................................................... 200
6.1 Observable和Flowable ............................................................................................. 200
6.2 null的使用 ................................................................................................................. 203
6.3 Single和Completable ................................................................................................ 205
6.4 Maybe ......................................................................................................................... 207
6.5 Subscriber ................................................................................................................... 208
6.5.1 DefaultSubscriber .................................................................................................. 209
6.5.2 ResourceSubscriber ................................................................................................ 210
6.5.3 DisposableSubscriber ............................................................................................. 211
6.6 Action和Function ..................................................................................................... 212
6.7 錯誤處理 .................................................................................................................... 214
6.8 Scheduler .................................................................................................................... 216
作 譯 者: | |||||||||
| |||||||||
所屬分類: >> >> 編程語言 | |||||||||
紙質書定價:¥79.0 |
第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
評分
評分
評分
評分
評分
評分
評分
評分
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有