編輯推薦
基於Android 6.0全麵講解Android桌麵體係
深入解析Android係統應用程序Launcher3
廣泛涵蓋Launcher清單、應用程序組件、資源配置、UI組件、Launcher操作及Protocol Buffer
Launcher是Android係統中十分重要的係統應用程序,本書從應用程序開發的角度全麵解析瞭Launcher的技術細節。主要內容包括:
1. 從Launcher的清單入手,詳細解析瞭Activity、廣播接收器、內容提供者的使用方法,以及相關生命周期管理的技術細節;
2. 通過Launcher中的一些重要工具,全麵介紹瞭Launcher對於綫程以及內存的管理,這些技術和經驗 有助於開發者提升開發能力;
3. Protocol Buffer是Google力推的新技術,在Launcher中有著廣泛的應用,本書對其中的細節進行瞭深入的講解。
內容簡介
本書以Launcher為解析核心,全麵深入地介紹瞭Launcher的清單、應用程序組件、資源配置、UI組件以及Launcher的操作等,包含瞭整個桌麵的體係和開發技巧。本書語言通俗易懂,解析全麵,有利於讀者理解整個Launcher桌麵的體係。
本書適用於有一定Android開發經驗的工程師,也適閤作為中高級Android開發培訓教程。
作者簡介
張泳,Android開發工程師,對Android Launcher有深入研究和理解,熟悉Android SDK工作原理和OpenGL等技術,並對重力感應、NFC、SIP有所研究。目前主要從事Android係統應用開發以及定製Android版本(修改Launcher、Settings和鎖屏等)的工作。在實踐中解決瞭Android 2.1到Android 4.4原生代碼中的一些疑難問題,獨立完成瞭Android平颱上多個控件的開發。
目錄
目錄
第一部分 Launcher開發基礎
第1章 Launcher簡介 2
1.1 總體結構 2
1.2 Launcher3的交叉編譯 5
1.2.1 Launcher3的主體編譯 7
1.2.2 Protocol Buffer的Debug工具依賴庫編譯 8
1.2.3 生成Protocol Buffer的測試工具 9
1.2.4 Launcher3的編譯 9
1.3 Launcher3的應用程序體係 10
1.3.1 Launcher3的基礎信息 10
1.3.2 Launcher3的權限設置 10
1.3.3 Launcher3的應用程序根節點配置 11
1.3.4 Launcher3的應用程序組件配置 13
1.4 Protocol Buffer設計 16
第2章 LauncherApplication 17
2.1 創建Launcher應用程序 17
2.2 Launcher應用程序終止 18
2.3 注意事項 18
第二部分 Launcher的控製中心
第3章 Launcher的狀態保存與恢復 22
3.1 Android的狀態保存機製 22
3.2 Android的狀態恢復機製 29
3.2.1 onRestoreInstanceState的調用 29
3.2.2 onRestoreInstanceState的調用條件 32
3.2.3 Activity中的狀態恢復 34
3.2.4 Launcher中的狀態恢復 35
第4章 初始化桌麵 36
4.1 初始化Launcher運行環境 37
4.2 為生成Launcher的動態網格進行必要的準備 37
4.3 生成動態網格 39
4.4 獲取共享數據對象以及建立Launcher與LauncherModel的聯係 39
4.5 根據動態網格刷新圖標緩衝區 40
4.6 初始化拖曳控製器 40
4.7 獲取應用程序運行狀態 41
4.8 創建並啓動Widget Host 42
4.9 檢查配置是否有更新 42
4.10 裝載Launcher布局以及實例化相關控件 46
4.11 根據動態網格的屬性部署桌麵 48
4.12 Launcher的狀態恢復 49
4.13 監聽Widget配置變化 51
4.14 加載桌麵數據 52
4.15 更新必要的圖標 52
4.16 解鎖Launcher的方嚮設定 53
4.17 首次使用時顯示桌麵的幫助界麵 54
第5章 Home鍵:Launcher的另一種啓動方式 56
5.1 Launcher的重要配置 56
5.2 Home鍵的框架行為 57
5.2.1 導航欄的實現 57
5.2.2 窗口管理器的處理 58
5.2.3 Launcher的相關處理 59
第6章 Launcher的顯示 63
6.1 關於Activity的onResume 63
6.2 Activity類的onResume方法實現 63
6.3 Launcher的onResume實現 64
第7章 Launcher的狀態 68
7.1 Activity的暫停狀態 68
7.1.1 Activity暫停狀態發生的場景 68
7.1.2 Activity中暫停的實現 73
7.1.3 Launcher的暫停過程 74
7.2 Activity的啓動狀態 75
7.2.1 Activity中onStart的實現 75
7.2.2 Launcher的onStart實現 76
7.3 Activity的停止狀態 76
7.3.1 Activity中onStop的實現 77
7.3.2 Launcher的onStop實現 77
7.4 Launcher的銷毀狀態 78
7.4.1 銷毀狀態簡介 78
7.4.2 什麼時候會被銷毀 78
7.4.3 銷毀狀態的處理 81
第8章 Launcher的啓動應用及等待結果 85
8.1 在Launcher中啓動應用 85
8.1.1 安全啓動應用程序的通用方法 86
8.1.2 真正啓動應用程序的方法 86
8.2 啓動應用並等待結果 89
8.3 Launcher的應用場景 90
8.3.1 場景1:往桌麵上添加桌麵小部件時 90
8.3.2 場景2:往桌麵上添加應用程序的快捷方式時 92
8.3.3 場景3:用戶啓動選擇壁紙時 93
8.3.4 場景4:創建桌麵小部件時 93
8.3.5 場景5:桌麵小部件的視圖未能完全恢復時 95
8.4 應用程序處理端如何設置必要的返迴 96
8.5 處理返迴結果 97
第9章 Launcher的返迴鍵處理 99
9.1 Activity的onKeyDown方法的實現 99
9.2 Activity的onKeyUp方法的實現 100
9.3 Activity的onBackPressed方法的實現 101
9.4 Launcher的onBackPressed方法 101
第10章 Launcher的按鍵處理 104
10.1 onKeyDown和onKeyUp方法 104
10.1.1 Activity中的onKeyDown方法 104
10.1.2 Launcher的onKeyDown方法 110
10.2 自主分發按鍵事件 112
10.2.1 Activity的dispatchKey-Event實現 112
10.2.2 Launcher中的按鍵分發 113
第11章 Launcher的窗口周期 115
11.1 應用程序中Activity的創建 115
11.2 應用程序窗口的創建 119
11.3 窗口中設置UI 121
11.3.1 在窗口中設置布局 121
11.3.2 安裝窗口容器 123
11.3.3 初始化應用程序的ActionBar 124
11.4 Launcher中實現的窗口狀態變化接口 124
11.4.1 應用程序添加到窗口中 124
11.4.2 應用程序從窗口中拆離 128
11.4.3 窗口焦點變化 131
第12章 Launcher實現的框架接口 132
12.1 控件點擊事件監聽接口 132
12.1.1 設置點擊監聽器方法 132
12.1.2 點擊事件的處理機製 133
12.1.3 Launcher的點擊事件處理 134
12.2 控件長按事件監聽接口 142
12.2.1 什麼條件下被認為是長按事件 142
12.2.2 Launcher的控件長按事件處理 146
12.3 Launcher的Touch事件 148
12.3.1 創建應用程序窗口與底層輸入設備之間的關聯 148
12.3.2 ViewRootImpl中Window- InputEventReceiver類的實例化 152
12.3.3 基於窗口管理服務的消息分發 153
12.3.4 Touch事件的應用程序之旅 156
第13章 Launcher控製接口的實現 162
13.1 LauncherModel的Callbacks接口的定義 162
13.2 指示Launcher顯示時需要重新加載數據 164
13.3 獲取當前正在顯示的桌麵頁索引 164
13.4 加載Workspace的預處理 165
13.5 批量添加快捷方式或者文件夾 166
13.6 綁定並且添加桌麵頁 169
13.7 綁定文件夾 170
13.8 指示加載過程完成 170
13.9 綁定桌麵小部件 172
13.10 綁定應用程序菜單界麵數據 175
13.11 批量添加應用程序一體化操作 175
13.12 更新應用程序 177
13.13 應用程序已經被恢復 177
13.14 更新應用程序狀態 178
13.15 更新應用程序信息 178
13.16 應用程序被刪除 178
13.17 更新應用程序菜單快捷方式與桌麵小部件信息 179
13.18 更新搜索相關信息 179
13.19 是否在應用程序菜單按鈕範圍內 180
13.20 保存同步加載頁麵 180
第14章 Launcher的內部工具 181
14.1 客戶定製頁麵 181
14.1.1 組裝定製化頁麵內容 181
14.1.2 定製化頁麵的變化信號處理 182
14.1.3 添加定製化頁麵接口 182
14.1.4 定製化頁麵的屬性及控製 184
14.1.5 默認的定製化頁麵 184
14.2 Launcher3的搜索 184
14.2.1 發現搜索提供者 185
14.2.2 將搜索信息轉變為可填充的視圖 185
14.3 Launcher的一些工具 187
14.3.1 桌麵組件的ID分配 187
14.3.2 生成應用程序快捷方式的方法 188
14.3.3 添加桌麵組件 189
14.4 桌麵和應用程序菜單之間的切換 195
14.4.1 桌麵的顯示 195
14.4.2 顯示應用程序菜單界麵 196
14.4.3 進入預覽模式 196
第三部分 Lauhcher開發進階
第15章 Launcher的數據庫 198
15.1 關於ContentProvider 198
15.2 Launcher數據庫組件的配置 199
15.2.1 Launcher數據庫組件的訪問權限定義及其使用方法 199
15.2.2 Launcher數據庫組件的配置 200
15.2.3 讀寫權限的使用 201
15.3 Launcher的數據庫詳解 201
15.3.1 Launcher的數據庫實現 201
15.3.2 Launcher的ContentProvider 211
15.4 Launcher數據庫工具 216
15.4.1 Launcher數據庫刪除工具 217
15.4.2 Launcher數據庫閤並工具 217
15.4.3 必要時導入默認桌麵配置 222
15.4.4 獲取默認配置文件解析器實例 224
15.4.5 Launcher數據標誌清理工具 224
15.5 Android數據庫實戰 225
15.5.1 關於數據的約定 225
15.5.2 定義並使用TulingDBDemo的讀寫權限 225
15.5.3 數據庫框架搭建 226
15.5.4 數據庫文件以及錶的定義 226
15.5.5 定義訪問數據庫的訪問接口 228
15.5.6 ContentProvider的實現 229
15.5.7 操作數據庫 232
第16章 Launcher的廣播接收器 234
16.1 Launcher中的廣播概述 234
16.1.1 壁紙變更廣播接收器 234
16.1.2 桌麵小部件容器的重置廣播接收器 235
16.1.3 安裝快捷方式的接口 235
16.1.4 卸載快捷方式的接口 235
16.1.5 管理應用程序的廣播接收器 236
16.1.6 Launcher的中樞神經:LauncherModel 236
16.2 壁紙變更廣播接收器 237
16.3 桌麵小部件容器的重置廣播接收器 237
16.3.1 概況 237
16.3.2 注意事項 238
16.3.3 容器重置處理的流程 239
16.4 快捷方式的安裝接口 242
16.4.1 安裝快捷方式接口的使用實例 242
16.4.2 添加快捷方式的入口實現 243
16.4.3 Launcher2與Launcher3的區彆 247
16.5 快捷方式的卸載接口 247
16.5.1 卸載快捷方式接口的使用 248
16.5.2 卸載快捷方式入口實現 248
16.6 管理應用程序的廣播接收器 251
第17章 Launcher的數據中心:LauncherModel 252
17.1 LauncherModel的創建 252
17.2 LauncherModel的構造函數 253
17.3 與LauncherModel的溝通方式 255
17.3.1 LauncherModel操作的迴調接口 255
17.3.2 廣播接口 257
17.3.3 LauncherModel的應用程序級彆接口 258
17.4 LauncherModel的加載任務LoaderTask 267
17.4.1 LoaderTask的定義、屬性及構造 268
17.4.2 LoaderTask狀態查詢接口 269
17.4.3 指定頁麵加載接口 270
17.4.4 停止加載接口 270
17.4.5 獲取Launcher的通知接口 271
17.4.6 LoaderTask的run接口實現 272
17.4.7 LoaderTask的桌麵數據加載及綁定工具 274
17.4.8 加載過程工具 287
17.5 桌麵空間的處理 293
第18章 Launcher的壁紙配置 295
18.1 如何通過Launcher設置壁紙 295
18.2 Launcher3壁紙代碼結構與使用簡介 296
18.3 壁紙資源的來源 298
18.3.1 來源一:指定係統應用的某些資源 299
18.3.2 來源二:指定係統應用中所定製的路徑下的圖片資源 300
18.3.3 來源三:Launcher自帶的壁紙資源 301
18.3.4 來源四:Android係統默認壁紙 302
18.4 Launcher3壁紙的內部分類 305
18.4.1 功能性選項:PickImage-Info 305
18.4.2 URI類型壁紙項:URIWallpaperInfo 307
18.4.3 文件類型的壁紙項:FileWallpaperInfo 311
18.4.4 資源類型的壁紙項:ResourceWallpaperInfo 312
18.4.5 默認壁紙項:DefaultWallpaperInfo 313
18.5 關於壁紙的工具 315
18.5.1 設置係統壁紙的可見性 315
18.5.2 設置壁紙尺寸工具 316
18.5.3 設置壁紙的方法 317
18.6 利用Launcher設置壁紙 318
第19章 Launcher的上下文 319
19.1 LauncherAppState的使用 319
19.1.1 LauncherAppState初始化的前提 319
19.1.2 LauncherAppState的初始化 320
19.2 Launcher應用程序被終止的必要清理 321
19.3 監聽數據庫變化的觀察者 321
19.4 獲取屏幕方嚮的工具 322
19.5 關於弱引用 322
19.6 其他接口的應用 323
第20章 Launcher中的備份與還原 325
20.1 應用程序備份代理器的配置 325
20.2 備份與管理服務的開啓與關閉 326
20.3 實現數據備份與還原代理的幫助類 327
20.3.1 LauncherBackupHelper的performBackup方法 327
20.3.2 initializeIconCache方法 330
20.3.3 LauncherBackupHelper的restoreEntity方法 336
20.4 Launcher數據備份與還原的代理 338
20.4.1 創建數據備份與還原代理 338
20.4.2 應用程序的數據還原 339
第21章 基於Google的Protocol Buffer協議開發 341
21.1 實際應用場景概述 341
21.1.1 備份流程 341
21.1.2 還原流程 341
21.2 Protocol Buffer簡介 342
21.3 PB消息的定義 344
21.3.1 指定字段的類型 344
21.3.2 為消息字段指定TAG 345
21.3.3 為消息字段指定規則 345
21.3.4 增加消息定義 346
21.3.5 為消息添加注釋 347
21.3.6 編譯.proto文件概況 347
21.4 簡單PB消息的配置 348
21.4.1 PB的基礎數據類型 348
21.4.2 基礎數據類型的默認配置 349
21.4.3 PB的枚舉類型 350
21.5 復閤PB消息的定義 351
21.5.1 在消息中使用其他消息 351
21.5.2 PB中的內嵌消息 353
21.6 PB消息的高級用法 354
21.6.1 升級一則消息 354
21.6.2 PB的map類型 355
21.6.3 PB的包 355
21.6.4 PB的其他選項 356
21.7 生成代碼 358
21.7.1 創建ProtocolBuffDemo工程 358
21.7.2 編寫第一個proto文件 360
21.7.3 使用protoc工具編譯TulingMessage.proto 361
21.7.4 使用生成TulingMessa
Android Launcher應用開發 下載 mobi epub pdf txt 電子書