第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 onErrorRetum 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和hmeStamp 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 Disposable Subscriber 211
6.6 Action和Function 212
6.7错误处理 214
6.8 Scheduler 216