反應(yīng)式編程實(shí)戰(zhàn) 使用RxJava 2.x開發(fā)Android應(yīng)用
定 價(jià):118 元
叢書名:移動(dòng)開發(fā)經(jīng)典叢書
- 作者:[芬] 蒂莫·圖奧米寧(Timo Tuominen) 著,韓義波 譯
- 出版時(shí)間:2020/9/1
- ISBN:9787302560999
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TN929.53
- 頁碼:381
- 紙張:膠版紙
- 版次:1
- 開本:16開
對(duì)于Android開發(fā)人員來說,編寫多線程應(yīng)用具有挑戰(zhàn)性。Rxjava簡化了復(fù)雜的線程操作,并能夠在線程之間無縫切換時(shí)保持適當(dāng)?shù)耐。Rxjava還為應(yīng)用帶來了反應(yīng)式編程的優(yōu)勢,這意味著更好的實(shí)時(shí)反應(yīng)能力,是每個(gè)Android開發(fā)人員的圣杯。
《反應(yīng)式編程實(shí)戰(zhàn)使用Rxjava 2.x開發(fā)Android應(yīng)用》首先引導(dǎo)讀者以反應(yīng)的方式考慮編程和數(shù)據(jù)。該書詳細(xì)介紹Android中Rxjava的核心模式,并解釋視圖模型。然后探討備受追捧的應(yīng)用功能,例如聊天客戶端和巧妙的轉(zhuǎn)換。最后,讀者將了解與函數(shù)式反應(yīng)式編程(FRP)思維緊密結(jié)合的高層設(shè)計(jì)關(guān)注點(diǎn)、架構(gòu)方法和框架。
主要內(nèi)容:
反應(yīng)式編程簡介
簡單的線程管理
提高UI反應(yīng)能力
異步思維方式
構(gòu)建一個(gè)有效的聊天客戶端
讀者對(duì)象:
讀者應(yīng)該具備一些構(gòu)建Android應(yīng)用的經(jīng)驗(yàn),但不必具有使用Rxjava的經(jīng)驗(yàn)。
對(duì)于Android開發(fā)人員來說,編寫多線程應(yīng)用具有挑戰(zhàn)性。RxJava簡化了復(fù)雜的線程操作,并能夠在線程之間無縫切換時(shí)保持適當(dāng)?shù)耐健T趹?yīng)用中RxJava還體現(xiàn)出了反應(yīng)式編程的優(yōu)勢,它意味著更好的實(shí)時(shí)反應(yīng)能力,是每個(gè)Android開發(fā)人員的圣杯。
《反應(yīng)式編程實(shí)戰(zhàn) 使用RxJava 2.x開發(fā)Android應(yīng)用》內(nèi)容分為三個(gè)部分。第一部分介紹如何在Android應(yīng)用中使用RxJava處理異步事件和網(wǎng)絡(luò)請(qǐng)求。第二部分以文件資源管理器應(yīng)用和井字游戲應(yīng)用為例說明如何使用視圖模型優(yōu)化體系結(jié)構(gòu),以及如何對(duì)RxJava代碼進(jìn)行單元測試。第三部分首先深入探討如何使用WebSocket協(xié)議來構(gòu)建實(shí)時(shí)聊天客戶端應(yīng)用,然后介紹如何使用Rx和視圖模型進(jìn)行動(dòng)畫UI高級(jí)開發(fā),最后展示如何在RxJava中完整創(chuàng)建可拖動(dòng)和可縮放的地圖客戶端應(yīng)用。另外,本書的所有章節(jié)都有完整的公開在線代碼示例。
有趣的是,在介紹反應(yīng)式編程之前,我們首先了解一種反應(yīng)性較弱的平臺(tái):Adobe Flash。在被Adobe收購之前,Macromedia構(gòu)建了一個(gè)名為Flex的成熟框架(后來被稱為Apache Flex)。Flex中的一個(gè)重要概念是每個(gè)呈現(xiàn)組件的setData函數(shù)。setData函數(shù)的作用是接收一個(gè)數(shù)據(jù)對(duì)象,它完全包含組件需要呈現(xiàn)的信息。盡管一直沒有完全弄清楚如何在原始源和組件預(yù)期接收的內(nèi)容之間轉(zhuǎn)換數(shù)據(jù),但我從年輕時(shí)就一直致力于編寫靈活的DirectX C++代碼,這是一個(gè)很好的關(guān)注點(diǎn)分離。
六年前,由于有了一些平臺(tái),我開始與三星公司合作項(xiàng)目。在這個(gè)過程中,我嘗試將我在Futurice公司工作期間學(xué)到的Flex相關(guān)知識(shí)應(yīng)用到不同的環(huán)境中,以獲得不同的結(jié)果,但最終產(chǎn)生了更多的概念性問題卻不知道答案。
這一次的任務(wù)是在Android上創(chuàng)建一個(gè)實(shí)時(shí)體育應(yīng)用,其中包含一系列具有不同形式和延遲的數(shù)據(jù)源。我們經(jīng)常會(huì)收到部分?jǐn)?shù)據(jù),但這些數(shù)據(jù)只用于更新比賽成績。使用標(biāo)準(zhǔn)工具構(gòu)建系統(tǒng)似乎非常重要。和經(jīng)典故事的劇情一樣,我的同事Juha Ristolainen曾經(jīng)讀過一篇關(guān)于Rxjava這個(gè)新工具的博文。我想我可以試一試。
必須承認(rèn)的是,掌握Rxjava并將其應(yīng)用到數(shù)據(jù)處理問題領(lǐng)域是我學(xué)習(xí)新技術(shù)期間印象最深刻的一次經(jīng)歷。具有諷刺意味的是,第一次經(jīng)歷是在20年前我學(xué)Java編程時(shí)。查看Rxjava已啟用的功能,就像一次又一次地尋找拼圖中缺失的那些塊,我甚至都沒有意識(shí)到這些塊已經(jīng)丟失。
四年后,事實(shí)證明Rxjava雖然有明確的概念,但使用起來并不簡單。為了掌握其用法,我的同事Olli Jokinen和我花費(fèi)了數(shù)晚時(shí)間,試圖徹底弄明白這種尚未發(fā)布的技術(shù)。當(dāng)時(shí)Rxjaval還處于Beta測試階段。最終,我們解決了代碼中的問題,代碼庫也成為我有幸用過的最出色的一種代碼庫。
你手里拿著的是一本花費(fèi)數(shù)千小時(shí)撰寫的書,它會(huì)告訴你如何使用Rxjava進(jìn)行Android應(yīng)用開發(fā)。這也是我撰寫這本書的初衷。
Timo Tuominen,作為三星重大Android項(xiàng)目的架構(gòu)師,Timo Tuominen在與Futurice合作時(shí)已廣泛使用了FRP和Rxjavao。
第Ⅰ部分 反應(yīng)式核心編程
第1章 反應(yīng)式編程簡介
1.1 你閱讀本書的原因
1.2 不要閱讀本書的情形
1.3 00P、Rx、FP和FRP
1.3.1 00P,面向?qū)ο缶幊?br />1.3.2 FP,函數(shù)式編程
1.3.3 FRP,函數(shù)反應(yīng)式編程
1.3.4 Rx反應(yīng)式編程
1.4 Rx的特征
1.5 編寫的代碼就是所實(shí)現(xiàn)的功能
1.5.1 灰色代碼
1.5.2 反應(yīng)式編程開發(fā)
1.6 反應(yīng)式總覽
1.6.1 移動(dòng)開發(fā)
1.6.2 Web和HTML5
1.6.3 后端系統(tǒng)和Rx
1.7 在開始學(xué)習(xí)之前你需要知道什么
1.7.1 你需要具備的條件
1.7.2 你不需要具備的條件
1.8 關(guān)于本書
1.8.1 在線代碼示例
1.8.2 茶歇
1.9 Rxjava2和Android
1.9.1 為什么選擇Java
1.9.2 為什么選擇Rxjava
1.10 設(shè)置Android環(huán)境
1.10.1 GoogleAndroid StudiO
1.10.2 Git
1.10.3Rxjava2依賴項(xiàng)
1.11 JaVa 8 larnbda
1.11.1 什么是lambda函數(shù)
1.1 1.2 剖析lambda函數(shù)
1.1 1.3 lambda函數(shù)有什么優(yōu)點(diǎn)
1.12 深入研究Rx:實(shí)時(shí)搜索
1.13 項(xiàng)目設(shè)置
1.13.1 一種快速實(shí)現(xiàn)
1.13.2 基于時(shí)間篩選文本更改
1.14作為數(shù)據(jù)的emitter的文本輸入
1.15 發(fā)布-訂閱模式
1.16 作為observable的文本輸入
1.17篩選observable
1.17.1 .filter操作符
1.17.2 0bservable和subscriber的時(shí)間解耦
1.18 時(shí)間延遲
1.19 延遲時(shí)間的優(yōu)勢
1.20 debounce操作符
1.21 將代碼放入Android系統(tǒng)中
1.22 反應(yīng)式編程的原理
1.23 事件和彈珠圖
1.24 本章小結(jié)
第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 訂閱并轉(zhuǎn)換不同的ObServable
2.5 當(dāng)發(fā)出正常的網(wǎng)絡(luò)請(qǐng)求時(shí)會(huì)發(fā)生什么
2.6 當(dāng)observable發(fā)出網(wǎng)絡(luò)請(qǐng)求時(shí)會(huì)發(fā)生什么
2.7 網(wǎng)絡(luò)請(qǐng)求作為ObSerVable
2.8 示例:RSS提要聚合器
2.9 提要結(jié)構(gòu)
2.10 獲取數(shù)據(jù)
2.11 combineLatest操作符
2.12 到目前為止的Rx代碼
2.13 異步數(shù)據(jù)處理鏈
2.14 按順序排列列表
2.15.map操作符
2.15.1 操作符的有效期
2.15.2 使用.map對(duì)列表進(jìn)行排序
2.16 不變性簡介
2.16.1 不具有不變性的鏈
2.16.2 具有不可變數(shù)據(jù)的鏈
2.16.3 使用不變性解決問題
2.16.4 Java中的builder
2.17 錯(cuò)誤處理
2.17.1 網(wǎng)絡(luò)錯(cuò)誤及其處理
2.1 7.2 當(dāng)真正的錯(cuò)誤出現(xiàn)時(shí)該怎么辦
2.18 向客戶端添加更多提要
2.18.1 提要observable列表
2.18.2 細(xì)說combineLatest
2.18.3 有多個(gè)彈珠的combineLatest
2.19 本章小結(jié)
2.19.1 未來展望
2.19.2 從事件到反應(yīng)式狀態(tài)
第3章 建立數(shù)據(jù)處理鏈
3.1 0bservable的不同角色
……
第Ⅱ部分 Rxjava中的架構(gòu)
第Ⅲ部分 高級(jí)Rxjava架構(gòu)