| 作 译 者: | |||||||||
| |||||||||
| 所属分类: >> >> 网络与互联网 | |||||||||
| 纸质书定价:¥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 的书籍,毕竟响应式编程是目前非常热门且实用的技术,尤其是在 Android 开发领域。我手上这本《RxJava响应式编程+RxJava 2.x 实战 RxJava响应式编程入门教程书籍》虽然名字听起来很全面,但说实话,它在某些方面让我感到有些不尽如人意。 首先,这本书对于 RxJava 核心概念的讲解,虽然试图做到通俗易懂,但总感觉缺乏一些深度和广度。例如,在解释 Observable、Observer、Subscriber 这些基础概念时,作者给出的例子虽然直观,但并没有深入剖析它们背后的工作原理,也没有详细说明不同类型 Observable 的细微差别以及它们在实际开发中如何选择。我期望能看到更多关于背压(backpressure)的详细阐述,这在处理大量数据流时至关重要,但书中对这部分的论述相对简略,并没有提供足够的实用技巧来指导我如何有效地管理背压,避免应用崩溃或性能下降。此外,对于操作符(operators)的介绍,虽然列举了不少,但很多操作符的组合应用以及实际场景的解决方案并没有得到充分的展示,导致我在面对复杂的异步任务时,仍然感到无从下手。
评分坦白说,这本书在 RxJava 2.x 的新特性和最佳实践方面,也没有给我带来太多的惊喜。虽然书名提到了 2.x 版本,但整体的讲解风格和内容,感觉并没有充分发挥 2.x 版本在性能和易用性上的提升。例如,对于 Flowable 和背压策略的介绍,虽然有提及,但深度和广度远远不够,很多时候还是沿用了 1.x 的思路,没有充分展示 2.x 在处理背压方面的优势和不同策略的应用场景。此外,书中对一些更高级的 RxJava 概念,如 Subject 的各种类型(PublishSubject, BehaviorSubject, ReplaySubject, AsyncSubject)在不同场景下的适用性,以及它们与 Android 生命周期管理的结合,也并没有进行深入的探讨。我希望能看到更多关于如何利用 RxJava 2.x 来优化代码结构,提升应用性能,以及更好地集成到现有的 Android 开发框架中的实践经验。
评分这本书的另一大遗憾在于,它在实际项目中的应用指导方面,略显不足。虽然标题中带有“实战”二字,但我发现书中提供的案例代码,很多都偏向于理论演示,距离真实项目中的复杂场景还有一段距离。比如,在处理网络请求、数据库操作、UI 事件流等常见场景时,书中的代码片段往往是孤立的,缺乏将多个 RxJava 操作符串联起来解决实际问题的完整流程。我期待能够看到一些更贴近实际开发的项目示例,例如如何利用 RxJava 来构建一个响应式的网络请求模块,或者如何管理应用的状态和事件流。此外,书中对于错误处理机制的讲解也相对笼统,并没有深入探讨在 RxJava 中如何进行精细化的错误捕获、重试策略以及优雅地将错误信息传递给 UI 层,这在稳定性要求很高的应用中是至关重要的。
评分这本书的另一个方面让我感到有些失望,那就是它在解释 RxJava 与其他技术栈的集成方面,做得不够深入。在现代的 Android 开发中,RxJava 往往需要与 Kotlin、Jetpack 组件(如 ViewModel, LiveData, Room)以及第三方库(如 Retrofit, Glide)结合使用,但这本书在这方面的指导非常有限。例如,书中没有详细介绍如何将 RxJava 的 Observable/Flowable 与 Kotlin 的协程(Coroutines)进行巧妙地结合,或者如何利用 RxJava 来简化 ViewModel 和 LiveData 的异步操作。此外,对于如何利用 RxJava 来处理 Jetpack Navigation 组件的导航事件,或者如何结合 Retrofit 实现更优雅的网络请求和响应处理,也没有提供足够的案例和技巧。我希望这本书能够提供更多关于 RxJava 在实际项目开发中与其他技术栈融合的“最佳实践”,从而帮助我构建更现代化、更高效的应用。
评分总的来说,这本书更像是一本入门级的概述,对于想要深入理解 RxJava 的开发者来说,可能远远不够。它提供的基础知识虽然有,但缺乏深度和广度,尤其是在实际项目中的应用指导和高级概念的讲解方面,存在明显的不足。我希望能找到一本能够提供更丰富、更具实践性的案例,能够详细阐述 RxJava 在各种复杂场景下的解决方案,并能深入探讨 RxJava 2.x 的最新特性和最佳实践的书籍。这本书更适合那些刚刚接触 RxJava,对响应式编程完全没有概念的读者,但对于已经具备一定基础,或者希望将 RxJava 深入应用于实际开发中的开发者来说,它提供的价值相对有限,需要结合其他资料进行补充学习。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有