本書介紹了關(guān)系型數(shù)據(jù)庫和 SQLite 相關(guān)的理論知識,同時也介紹了在 Android 開發(fā)中和數(shù)據(jù)相關(guān)的方方面面,包括數(shù)據(jù)類型的定義、數(shù)據(jù)的增刪改查、數(shù)據(jù)的持久化和展示、使用 content provider 共享數(shù)據(jù)、使用 Intent API 傳遞數(shù)據(jù),以及和遠(yuǎn)程服務(wù)器進(jìn)行數(shù)據(jù)交互等。本書的內(nèi)容從相關(guān) API 的基本使用到最佳實踐都有涉獵,對于提升 Android 開發(fā)水平,寫出更高質(zhì)量的應(yīng)用很有幫助。閱讀本書,并不需要對 Android 開發(fā)有很多的經(jīng)驗,但是要求讀者有一些 Android 開發(fā)基礎(chǔ),理解Android 的基礎(chǔ)組件。如果對 Android / Java 的線程模型有一些了解的話,對快速理解內(nèi)容會很有幫助。
本書作者 Adam Stroud 于 2010 年開始從事 Android 開發(fā)。他是 Runkeeper,、Mustbin 和 Chef Nightly 等創(chuàng)業(yè)公司的早期員工。從零開始主導(dǎo)這些團(tuán)隊的 Android 應(yīng)用開發(fā)。他熱愛 Android 和開源,除了寫代碼外,他還寫了另外一些 Android 的書籍。他喜歡成為技術(shù)社區(qū)的一份子,經(jīng)常在技術(shù)社區(qū)做分享和演講。本書寫成時,Adam 開始了新的一次創(chuàng)業(yè),任技術(shù)聯(lián)合創(chuàng)始人,負(fù)責(zé) Android 應(yīng)用的開發(fā)。
廖祜秋,開源愛好者,《構(gòu)建 F8 App / React Native 開發(fā)指南》譯者和維護(hù)者,F(xiàn)resco 文檔譯者和維護(hù)者,Infer 文檔譯者和維護(hù)者。
第1章 關(guān)系型數(shù)據(jù)庫 1
數(shù)據(jù)庫簡史 1
層次模型 2
網(wǎng)狀模型 2
關(guān)系模型簡介 3
關(guān)系模型 3
關(guān)系 3
關(guān)系的屬性 5
關(guān)聯(lián) 6
參照完整性 7
關(guān)系語言 8
關(guān)系代數(shù) 9
關(guān)系演算 12
數(shù)據(jù)庫語言 13
總結(jié) 14
第2章 SQL介紹 15
數(shù)據(jù)定義語言 15
表 16
索引 18
視圖 21
觸發(fā)器 22
數(shù)據(jù)操作語言 26
INSERT 26
UPDATE 28
DELETE 29
查詢 29
ORDER BY 31
連接 32
總結(jié) 35
第3章 SQLite介紹 36
SQLite 的特性 36
SQLite 的特征 36
外鍵支持 37
全文索引 37
原子事務(wù) 38
多線程支持 39
SQLite 的不足 39
有限的連接支持 39
視圖只讀 40
有限的 ALTER TABLE 支持 40
SQLite 數(shù)據(jù)類型 40
總結(jié) 42
第4章 Android中的SQLite 43
移動設(shè)備上的數(shù)據(jù)持久化 43
Android 中的數(shù)據(jù)庫 API 43
SQLiteOpenHelper 44
SQLiteDatabase 53
數(shù)據(jù)庫升級策略 53
重建數(shù)據(jù)庫 54
修改現(xiàn)有數(shù)據(jù)庫 54
復(fù)制表和刪除表 55
數(shù)據(jù)訪問和主線程 56
查看數(shù)據(jù)庫中的數(shù)據(jù) 56
使用 adb 訪問數(shù)據(jù)庫 56
使用第三方工具訪問數(shù)據(jù)庫 67
總結(jié) 70
第5章 在 Android 中使用數(shù)據(jù)庫 72
操作數(shù)據(jù) 72
行插入 73
行更新 76
行替換 78
行刪除 79
事務(wù) 80
使用事務(wù) 80
事務(wù)與性能 81
查詢 82
快捷查詢方法 82
原始查詢方法 83
Cursor 84
讀取 Cursor 數(shù)據(jù) 84
管理 Cursor 86
CursorLoader 86
創(chuàng)建 CursorLoader 87
啟用 CursorLoader 90
重啟 CursorLoader 91
總結(jié) 91
第6章 Content Provider 92
REST API 92
URI 93
暴露數(shù)據(jù) 93
方法實現(xiàn) 93
Content Resolver 98
對其他應(yīng)用程序暴露 Content Provider 99
Provider 級權(quán)限 99
單獨(dú)讀寫權(quán)限 100
URI 路徑權(quán)限 100
Content Provider 權(quán)限 100
Content Provider 合約類 102
允許外部程序訪問 104
實現(xiàn) Content Provider 104
繼承 android.content.ContentProvider 105
insert() 108
delete() 109
update() 111
query() 112
getType() 117
何時該使用 Content Provider 118
劣勢 119
優(yōu)勢 120
總結(jié) 121
第7章 數(shù)據(jù)庫和UI 122
從數(shù)據(jù)庫到 UI 122
使用 cursor loader 處理線程交互 122
綁定 cursor 的數(shù)據(jù)到 UI 123
cursor 作為觀察者 128
在 Activity 中使用 Content Provider 130
Activity 的實現(xiàn)細(xì)節(jié) 131
創(chuàng)建 cursor Loader 132
處理返回數(shù)據(jù) 133
處理數(shù)據(jù)變化 139
總結(jié) 143
第8章 使用Intent共享數(shù)據(jù) 144
發(fā)送 Intent 144
顯式 Intent 144
隱式 Intent 145
啟動一個目標(biāo) Activity 145
接收隱式 Intent 147
構(gòu)造 Intent 148
Action 148
Extra 149
Extras 數(shù)據(jù)類型 150
什么不該放到 Intent 中 153
Share 菜單 154
總結(jié) 156
第9章 網(wǎng)絡(luò)通信 157
REST 和 Web Services 157
REST 簡介 157
REST 風(fēng)格的 Web API 158
訪問 Web API 159
使用 Android 標(biāo)準(zhǔn) API 訪問 Web Service 159
使用 Retrofit 訪問 Web Service 168
使用 Volley 訪問 Web Service 174
數(shù)據(jù)持久化 181
數(shù)據(jù)傳輸和電量消耗 181
數(shù)據(jù)傳輸和用戶體驗 182
本地持久化 182
SyncAdapter 182
AccountAuthenticator 183
SyncAdapter 186
手動同步遠(yuǎn)程數(shù)據(jù) 191
RxJava 簡介 191
Retrofit + RxJava 191
使用 RxJava 進(jìn)行數(shù)據(jù)同步 194
總結(jié) 200
第10章 Data Binding 201
在項目中使用 Data Binding 201
View 的 Data Binding 布局 202
將 Activity 和布局綁定 203
使用 Binding 對象更新 View 205
處理數(shù)據(jù)變化 208
使用 Data Binding 來去除重復(fù)代碼 211
Data Binding 的表達(dá)式語言 214
總結(jié) 216