反应式编程实战 使用RxJava 2.x开发Android应用
定 价:118 元
丛书名:移动开发经典丛书
- 作者:[芬] 蒂莫·图奥米宁(Timo Tuominen) 著,韩义波 译
- 出版时间:2020/9/1
- ISBN:9787302560999
- 出 版 社:清华大学出版社
- 中图法分类:TN929.53
- 页码:381
- 纸张:胶版纸
- 版次:1
- 开本:16开
对于Android开发人员来说,编写多线程应用具有挑战性。Rxjava简化了复杂的线程操作,并能够在线程之间无缝切换时保持适当的同步。Rxjava还为应用带来了反应式编程的优势,这意味着更好的实时反应能力,是每个Android开发人员的圣杯。
《反应式编程实战使用Rxjava 2.x开发Android应用》首先引导读者以反应的方式考虑编程和数据。该书详细介绍Android中Rxjava的核心模式,并解释视图模型。然后探讨备受追捧的应用功能,例如聊天客户端和巧妙的转换。最后,读者将了解与函数式反应式编程(FRP)思维紧密结合的高层设计关注点、架构方法和框架。
主要内容:
反应式编程简介
简单的线程管理
提高UI反应能力
异步思维方式
构建一个有效的聊天客户端
读者对象:
读者应该具备一些构建Android应用的经验,但不必具有使用Rxjava的经验。
对于Android开发人员来说,编写多线程应用具有挑战性。RxJava简化了复杂的线程操作,并能够在线程之间无缝切换时保持适当的同步。在应用中RxJava还体现出了反应式编程的优势,它意味着更好的实时反应能力,是每个Android开发人员的圣杯。
《反应式编程实战 使用RxJava 2.x开发Android应用》内容分为三个部分。第一部分介绍如何在Android应用中使用RxJava处理异步事件和网络请求。第二部分以文件资源管理器应用和井字游戏应用为例说明如何使用视图模型优化体系结构,以及如何对RxJava代码进行单元测试。第三部分首先深入探讨如何使用WebSocket协议来构建实时聊天客户端应用,然后介绍如何使用Rx和视图模型进行动画UI高级开发,最后展示如何在RxJava中完整创建可拖动和可缩放的地图客户端应用。另外,本书的所有章节都有完整的公开在线代码示例。
有趣的是,在介绍反应式编程之前,我们首先了解一种反应性较弱的平台:Adobe Flash。在被Adobe收购之前,Macromedia构建了一个名为Flex的成熟框架(后来被称为Apache Flex)。Flex中的一个重要概念是每个呈现组件的setData函数。setData函数的作用是接收一个数据对象,它完全包含组件需要呈现的信息。尽管一直没有完全弄清楚如何在原始源和组件预期接收的内容之间转换数据,但我从年轻时就一直致力于编写灵活的DirectX C++代码,这是一个很好的关注点分离。
六年前,由于有了一些平台,我开始与三星公司合作项目。在这个过程中,我尝试将我在Futurice公司工作期间学到的Flex相关知识应用到不同的环境中,以获得不同的结果,但最终产生了更多的概念性问题却不知道答案。
这一次的任务是在Android上创建一个实时体育应用,其中包含一系列具有不同形式和延迟的数据源。我们经常会收到部分数据,但这些数据只用于更新比赛成绩。使用标准工具构建系统似乎非常重要。和经典故事的剧情一样,我的同事Juha Ristolainen曾经读过一篇关于Rxjava这个新工具的博文。我想我可以试一试。
必须承认的是,掌握Rxjava并将其应用到数据处理问题领域是我学习新技术期间印象最深刻的一次经历。具有讽刺意味的是,第一次经历是在20年前我学Java编程时。查看Rxjava已启用的功能,就像一次又一次地寻找拼图中缺失的那些块,我甚至都没有意识到这些块已经丢失。
四年后,事实证明Rxjava虽然有明确的概念,但使用起来并不简单。为了掌握其用法,我的同事Olli Jokinen和我花费了数晚时间,试图彻底弄明白这种尚未发布的技术。当时Rxjaval还处于Beta测试阶段。最终,我们解决了代码中的问题,代码库也成为我有幸用过的最出色的一种代码库。
你手里拿着的是一本花费数千小时撰写的书,它会告诉你如何使用Rxjava进行Android应用开发。这也是我撰写这本书的初衷。
Timo Tuominen,作为三星重大Android项目的架构师,Timo Tuominen在与Futurice合作时已广泛使用了FRP和Rxjavao。
第Ⅰ部分 反应式核心编程
第1章 反应式编程简介
1.1 你阅读本书的原因
1.2 不要阅读本书的情形
1.3 00P、Rx、FP和FRP
1.3.1 00P,面向对象编程
1.3.2 FP,函数式编程
1.3.3 FRP,函数反应式编程
1.3.4 Rx反应式编程
1.4 Rx的特征
1.5 编写的代码就是所实现的功能
1.5.1 灰色代码
1.5.2 反应式编程开发
1.6 反应式总览
1.6.1 移动开发
1.6.2 Web和HTML5
1.6.3 后端系统和Rx
1.7 在开始学习之前你需要知道什么
1.7.1 你需要具备的条件
1.7.2 你不需要具备的条件
1.8 关于本书
1.8.1 在线代码示例
1.8.2 茶歇
1.9 Rxjava2和Android
1.9.1 为什么选择Java
1.9.2 为什么选择Rxjava
1.10 设置Android环境
1.10.1 GoogleAndroid StudiO
1.10.2 Git
1.10.3Rxjava2依赖项
1.11 JaVa 8 larnbda
1.11.1 什么是lambda函数
1.1 1.2 剖析lambda函数
1.1 1.3 lambda函数有什么优点
1.12 深入研究Rx:实时搜索
1.13 项目设置
1.13.1 一种快速实现
1.13.2 基于时间筛选文本更改
1.14作为数据的emitter的文本输入
1.15 发布-订阅模式
1.16 作为observable的文本输入
1.17筛选observable
1.17.1 .filter操作符
1.17.2 0bservable和subscriber的时间解耦
1.18 时间延迟
1.19 延迟时间的优势
1.20 debounce操作符
1.21 将代码放入Android系统中
1.22 反应式编程的原理
1.23 事件和弹珠图
1.24 本章小结
第2章 连接observable
2.1 Rxjava和事件流
2.2 subscriber
2.3 Rxjava2 0bservable的类型
2.3.1 0bservable
2.3.2 Single
2.3.3 Maybe
2.3.4 Completable
2.3.5 Flowable
2.4 订阅并转换不同的ObServable
2.5 当发出正常的网络请求时会发生什么
2.6 当observable发出网络请求时会发生什么
2.7 网络请求作为ObSerVable
2.8 示例:RSS提要聚合器
2.9 提要结构
2.10 获取数据
2.11 combineLatest操作符
2.12 到目前为止的Rx代码
2.13 异步数据处理链
2.14 按顺序排列列表
2.15.map操作符
2.15.1 操作符的有效期
2.15.2 使用.map对列表进行排序
2.16 不变性简介
2.16.1 不具有不变性的链
2.16.2 具有不可变数据的链
2.16.3 使用不变性解决问题
2.16.4 Java中的builder
2.17 错误处理
2.17.1 网络错误及其处理
2.1 7.2 当真正的错误出现时该怎么办
2.18 向客户端添加更多提要
2.18.1 提要observable列表
2.18.2 细说combineLatest
2.18.3 有多个弹珠的combineLatest
2.19 本章小结
2.19.1 未来展望
2.19.2 从事件到反应式状态
第3章 建立数据处理链
3.1 0bservable的不同角色
……
第Ⅱ部分 Rxjava中的架构
第Ⅲ部分 高级Rxjava架构