| 作 譯 者: | |||||||||
| |||||||||
| 所屬分類: >> >> 網絡與互聯網 | |||||||||
| 紙質書定價:¥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
總的來說,這本書更像是一本入門級的概述,對於想要深入理解 RxJava 的開發者來說,可能遠遠不夠。它提供的基礎知識雖然有,但缺乏深度和廣度,尤其是在實際項目中的應用指導和高級概念的講解方麵,存在明顯的不足。我希望能找到一本能夠提供更豐富、更具實踐性的案例,能夠詳細闡述 RxJava 在各種復雜場景下的解決方案,並能深入探討 RxJava 2.x 的最新特性和最佳實踐的書籍。這本書更適閤那些剛剛接觸 RxJava,對響應式編程完全沒有概念的讀者,但對於已經具備一定基礎,或者希望將 RxJava 深入應用於實際開發中的開發者來說,它提供的價值相對有限,需要結閤其他資料進行補充學習。
評分這本書的另一個方麵讓我感到有些失望,那就是它在解釋 RxJava 與其他技術棧的集成方麵,做得不夠深入。在現代的 Android 開發中,RxJava 往往需要與 Kotlin、Jetpack 組件(如 ViewModel, LiveData, Room)以及第三方庫(如 Retrofit, Glide)結閤使用,但這本書在這方麵的指導非常有限。例如,書中沒有詳細介紹如何將 RxJava 的 Observable/Flowable 與 Kotlin 的協程(Coroutines)進行巧妙地結閤,或者如何利用 RxJava 來簡化 ViewModel 和 LiveData 的異步操作。此外,對於如何利用 RxJava 來處理 Jetpack Navigation 組件的導航事件,或者如何結閤 Retrofit 實現更優雅的網絡請求和響應處理,也沒有提供足夠的案例和技巧。我希望這本書能夠提供更多關於 RxJava 在實際項目開發中與其他技術棧融閤的“最佳實踐”,從而幫助我構建更現代化、更高效的應用。
評分坦白說,這本書在 RxJava 2.x 的新特性和最佳實踐方麵,也沒有給我帶來太多的驚喜。雖然書名提到瞭 2.x 版本,但整體的講解風格和內容,感覺並沒有充分發揮 2.x 版本在性能和易用性上的提升。例如,對於 Flowable 和背壓策略的介紹,雖然有提及,但深度和廣度遠遠不夠,很多時候還是沿用瞭 1.x 的思路,沒有充分展示 2.x 在處理背壓方麵的優勢和不同策略的應用場景。此外,書中對一些更高級的 RxJava 概念,如 Subject 的各種類型(PublishSubject, BehaviorSubject, ReplaySubject, AsyncSubject)在不同場景下的適用性,以及它們與 Android 生命周期管理的結閤,也並沒有進行深入的探討。我希望能看到更多關於如何利用 RxJava 2.x 來優化代碼結構,提升應用性能,以及更好地集成到現有的 Android 開發框架中的實踐經驗。
評分最近我一直在尋找一本能夠讓我深入理解 RxJava 的書籍,畢竟響應式編程是目前非常熱門且實用的技術,尤其是在 Android 開發領域。我手上這本《RxJava響應式編程+RxJava 2.x 實戰 RxJava響應式編程入門教程書籍》雖然名字聽起來很全麵,但說實話,它在某些方麵讓我感到有些不盡如人意。 首先,這本書對於 RxJava 核心概念的講解,雖然試圖做到通俗易懂,但總感覺缺乏一些深度和廣度。例如,在解釋 Observable、Observer、Subscriber 這些基礎概念時,作者給齣的例子雖然直觀,但並沒有深入剖析它們背後的工作原理,也沒有詳細說明不同類型 Observable 的細微差彆以及它們在實際開發中如何選擇。我期望能看到更多關於背壓(backpressure)的詳細闡述,這在處理大量數據流時至關重要,但書中對這部分的論述相對簡略,並沒有提供足夠的實用技巧來指導我如何有效地管理背壓,避免應用崩潰或性能下降。此外,對於操作符(operators)的介紹,雖然列舉瞭不少,但很多操作符的組閤應用以及實際場景的解決方案並沒有得到充分的展示,導緻我在麵對復雜的異步任務時,仍然感到無從下手。
評分這本書的另一大遺憾在於,它在實際項目中的應用指導方麵,略顯不足。雖然標題中帶有“實戰”二字,但我發現書中提供的案例代碼,很多都偏嚮於理論演示,距離真實項目中的復雜場景還有一段距離。比如,在處理網絡請求、數據庫操作、UI 事件流等常見場景時,書中的代碼片段往往是孤立的,缺乏將多個 RxJava 操作符串聯起來解決實際問題的完整流程。我期待能夠看到一些更貼近實際開發的項目示例,例如如何利用 RxJava 來構建一個響應式的網絡請求模塊,或者如何管理應用的狀態和事件流。此外,書中對於錯誤處理機製的講解也相對籠統,並沒有深入探討在 RxJava 中如何進行精細化的錯誤捕獲、重試策略以及優雅地將錯誤信息傳遞給 UI 層,這在穩定性要求很高的應用中是至關重要的。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有