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