深入淺出Android Jetpack:原理解析與應(yīng)用實(shí)戰(zhàn)
定 價(jià):89 元
叢書名:移動(dòng)應(yīng)用開發(fā)技術(shù)叢書
- 作者:黃林晴 著
- 出版時(shí)間:2022/6/1
- ISBN:9787111706151
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:212
- 紙張:
- 版次:
- 開本:16
全書共12章,首先介紹Jetpack的基本知識(shí),然后詳細(xì)介紹了架構(gòu)組件Lifecycle、ViewModel、LiveData、ViewBinding、DataBinding、Room、Hilt等,并通過切合實(shí)際的需求用例循序漸進(jìn)地講解了每個(gè)組件的使用方法和使用場景。除此之外,還針對當(dāng)下流行的Kotlin 協(xié)程和Flow進(jìn)行了講解,讓讀者了解如何使用這些技術(shù)結(jié)合Jetpack組件寫出更加優(yōu)雅的代碼,并演示了實(shí)戰(zhàn)項(xiàng)目“出行防疫App”的實(shí)現(xiàn)方法。z后介紹了全新的聲明式UI編程——Jetpack Compose。
前言
第1章 認(rèn)識(shí)Jetpack 1
1.1 Android開發(fā)架構(gòu)的發(fā)展歷程 1
1.2 什么是Jetpack 3
1.3 如何構(gòu)建支持Jetpack的項(xiàng)目 4
1.4 小結(jié) 6
第2章 使用Lifecycle,感知生命周期 7
2.1 從廣告引導(dǎo)頁的需求說起 7
2.2 Lifecycle的基本使用 10
2.2.1 使用Lifecycle優(yōu)化廣告引導(dǎo)頁的需求 10
2.2.2 自定義LifecycleOwner 14
2.3 使用Lifecycle解決實(shí)際項(xiàng)目中常見的問題 16
2.3.1 Dialog內(nèi)存泄漏問題分析 16
2.3.2 使用Lifecycle打造一個(gè)完美的Dialog 18
2.4 原理小課堂 19
2.5 小結(jié) 22
第3章 使用ViewModel管理頁面數(shù)據(jù) 23
3.1 什么是ViewModel 23
3.2 使用ViewModel解決廣告引導(dǎo)頁屏幕旋轉(zhuǎn)問題 26
3.3 ViewModel的生命周期 28
3.4 使用ViewModel實(shí)現(xiàn)數(shù)據(jù)共享 31
3.5 原理小課堂 33
3.6 小結(jié) 36
第4章 可觀察的數(shù)據(jù)持有者類LiveData 37
4.1 什么是LiveData 37
4.2 LiveData的基本使用 38
4.3 map與 switchMap 41
4.4 原理小課堂 46
4.5 小結(jié) 49
第5章 視圖綁定組件之ViewBinding 50
5.1 從findViewById說起 50
5.2 ViewBinding 的基本使用 53
5.3 ViewBinding的封裝優(yōu)化 55
5.4 原理小課堂 56
5.5 小結(jié) 58
第6章 數(shù)據(jù)綁定組件之DataBinding 59
6.1 DataBinding的基本使用 59
6.1.1 基礎(chǔ)布局綁定表達(dá)式 60
6.1.2 利用DataBinding綁定點(diǎn)擊事件 64
6.1.3 標(biāo)簽布局使用DataBinding 66
6.2 自定義BindingAdapter 67
6.3 雙向數(shù)據(jù)綁定 70
6.4 DataBinding與 ViewBinding的區(qū)別 73
6.5 原理小課堂 73
6.6 小結(jié) 75
第7章 官方數(shù)據(jù)庫框架之Room 76
7.1 Android數(shù)據(jù)庫ORM框架 76
7.2 使用Room實(shí)現(xiàn)登錄賬號(hào)列表功能 77
7.2.1 賬號(hào)列表的需求設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì) 77
7.2.2 準(zhǔn)備工作 78
7.2.3 定義數(shù)據(jù)實(shí)體類 78
7.2.4 定義數(shù)據(jù)庫訪問對象 79
7.2.5 賬號(hào)列表的查詢與新增 80
7.2.6 賬號(hào)列表的更新與刪除 83
7.3 Room數(shù)據(jù)庫的升級(jí) 86
7.4 原理小課堂 88
7.5 小結(jié) 90
第8章 減少手動(dòng)依賴,探究Hilt 91
8.1 什么是依賴注入 91
8.2 基于Dagger看Hilt 93
8.3 Hilt的基本使用 93
8.3.1 添加依賴 93
8.3.2 依賴注入普通對象 95
8.3.3 依賴注入第三方組件 97
8.3.4 依賴注入架構(gòu)組件 101
8.4 原理小課堂 102
8.5 小結(jié) 104
第9章 優(yōu)雅地實(shí)現(xiàn)異步任務(wù):Kotlin協(xié)程與Flow 105
9.1 什么是協(xié)程 105
9.2 使用協(xié)程優(yōu)雅地實(shí)現(xiàn)異步任務(wù) 106
9.2.1 協(xié)程的基本用法 106
9.2.2 更多構(gòu)建協(xié)程的方式 107
9.2.3 在Retrofit和架構(gòu)組件中使用協(xié)程 113
9.3 Kotlin數(shù)據(jù)流 116
9.3.1 Flow的基本使用 116
9.3.2 探究StateFlow與SharedFlow 120
9.4 原理小課堂 122
9.5 小結(jié) 124
第10章 分頁庫Paging3的使用 125
10.1 Android中分頁功能常見的設(shè)計(jì)方法 125
10.2 網(wǎng)絡(luò)請求的封裝與使用 126
10.3 使用Paging3實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的分頁加載 129
10.3.1 官方推薦的最佳架構(gòu) 129
10.3.2 PagingSource的定義與使用 131
10.3.3 PagingDataAdapter的定義與使用 133
10.3.4 將結(jié)果顯示在UI上 134
10.3.5 監(jiān)聽加載狀態(tài) 136
10.4 原理小課堂 140
10.5 小結(jié) 143
第11 章 打造一個(gè)MVVM架構(gòu)的健康出行App 144
11.1 項(xiàng)目需求設(shè)計(jì)與可行性分析 144
11.2 組件化結(jié)構(gòu)的設(shè)計(jì)與搭建 149
11.3 查詢城市數(shù)據(jù) 155
11.3.1 實(shí)現(xiàn)邏輯層代碼 156
11.3.2 實(shí)現(xiàn)UI層代碼 160
11.4 查詢城市核酸檢測機(jī)構(gòu) 165
11.4.1 實(shí)現(xiàn)邏輯層代碼 165
11.4.2 實(shí)現(xiàn)UI層代碼 167
11.5 查詢疫情風(fēng)險(xiǎn)等級(jí)地區(qū) 169
11.5.1 實(shí)現(xiàn)邏輯層代碼 169
11.5.2 實(shí)現(xiàn)UI層代碼 171
11.6 查詢健康出行政策 176
11.6.1 實(shí)現(xiàn)邏輯層代碼 176
11.6.2 實(shí)現(xiàn)UI層代碼 179
11.7 小結(jié) 182
第12章 體驗(yàn)最新響應(yīng)式編程技術(shù)Jetpack Compose 183
12.1 什么是Jetpack Compose 183
12.2 Compose的基礎(chǔ)知識(shí) 184
12.2.1 新建支持Compose的Android 項(xiàng)目 184
12.2.2 可組合函數(shù)與常用注解 187
12.3 Compose基礎(chǔ)組件的使用 188
12.3.1 Compose 文本組件和圖片組件 188
12.3.2 Compose 布局組件 190
12.4 Compose列表組件的使用 192
12.4.1 垂直列表組件Lazy-Column的使用 192
12.4.2 水平列表組件LazyRow的使用 196
12.4.3 網(wǎng)格列表組件Lazy-VerticalGrid的使用 197
12.5 小結(jié) 199