《Android開發精要》是2012年機械工業出版社出版的圖書,作者是范懷宇。該書講述的是如何才能寫出貼近Android設計理念、能夠更加高效和可靠運行的Android套用,通過Android的原始碼去了解其底層實現細節是最重要的方法之一。
基本介紹
- 書名:Android開發精要
- 作者: 范懷宇
- ISBN:978-7-1113-9058-9
- 頁數:335頁
- 定價: 69.00元
- 出版時間: 2012-8
基本信息,內容簡介,作者簡介,目錄,內容摘錄,
基本信息
作者: 范懷宇
出版年: 2012-8
頁數: 335
定價: 69.00元
ISBN: 978-7-1113-9058-9
內容簡介
Android系統太過於龐大,原始碼實現複雜,學習的技術門檻和時間成本都很高。 有沒有一種方法既能幫助開發者深入理解Android套用開發,又能不被底層大量的實現細節所羈絆,迅速掌握編寫高質量Android套用所需的知識?本書針對這個問題給出了完美的答案!它從Android繁雜的原始碼中抽取出了Android開發的“精華”和“要點”,剝離了大量瑣碎的底層實現細節,進行了高度概括和總結,不僅能幫助開發者迅速地從巨觀上理解整個Android系統的設計理念,而且能幫助開發者迅速地從微觀上掌握核心知識點的原理,從而編寫出高質量的Android套用。
本書共13章,在邏輯上分為4個部分。第一部分(1~2章):第1章系統介紹了Android的系統架構、核心模組和設計思想,旨在讓讀者真正理解它的設計理念;第2章講解了Android原始碼的獲取、編譯、閱讀和編輯的方法。第二部分(3~6章):第3章深入闡述了Android組件機制的設計理念和重要特徵,並詳細介紹了4大組件的方法和原理;第4章講解了Intent對象和Android的意圖機制,闡明了Android是如何將來自不同套用、不同進程的組件整合在一起的;第5章解析了Android中各個組件的生命周期,包括組件的進程模型和執行緒模型;第6章從開發的角度詳細闡述了組件間數據傳輸的解決方案,以及它們的優缺點和適用場景。第三部分(7~8章):第7章深入講解了Android的控制項框架,結合實際項目對重要控制項的實現和使用逐一進行了分析,還包含Android 4.0界面開發的實踐“精華”;第8章分析了Android的資源體系,剖析了Android底層對資源的處理。第四部分(9~13章):第9章講解了Android的數據存儲結構,以及不同數據存儲模式的使用要點;第10章分析了Android的各種網路連線方式,涵蓋NFC和基於WiFi的P2P連線等內容;第11章講解了Android的定位服務、地址服務和地圖服務的框架實現;第12章仔細分析了Android各種多媒體功能的實現機制;第13章對Android中比較有特色的一些模組的實現細節進行了分析。
作者簡介
范懷宇,資深Android開發工程師,畢業於清華大學,從事移動開發多年,對Android系統有頗為深入的研究,開發經驗十分豐富。曾就職於網易有道,負責完成了有道詞典Android版、網易掌上郵Android版、網易八方Android版等項目的開發工作,現就職於豌豆實驗室,負責豌豆莢2.0版本的設計和開發。
目錄
前言
致謝
第1章 Android的系統架構/1
1.1 Android系統架構概況/2
1.1.1 套用層/4
1.1.2 框架層/5
1.1.3 運行時/5
1.1.4 核心類庫/7
1.1.5 硬體抽象層和Linux核心/7
1.2 Android的核心功能模組/8
1.2.1 界面框架/8
1.2.2 數據存儲/9
1.2.3 網路通信/10
1.2.4 地理信息/11
1.2.5 圖形和多媒體處理/11
1.2.6 外部設備/12
1.2.7 特色功能模組/13
1.3 Android的架構特徵和設計思想/13
1.3.1 平台開放性/14
1.3.2 基於組件的套用設計/14
1.3.3 基於網路服務的平台/15
1.4 小結/15
第2章 Android原始碼的下載和編譯/16
2.1 Android原始碼的獲取和編譯/17
2.1.1 環境搭建/18
2.1.2 原始碼獲取/18
2.1.3 原始碼的編譯/21
2.2 Android原始碼結構/22
2.2.1 框架層原始碼目錄frameworks/22
2.2.2 套用層原始碼目錄packages/24
2.2.3 其他原始碼目錄/24
2.3 Android原始碼的閱讀和編輯/25
2.3.1 用Eclipse閱讀原始碼/25
2.3.2 反饋Bug/26
2.3.3 提交修改/27
2.4 小結/27
第3章 Android組件模型解析/28
3.1 基於Mashup的套用設計/29
3.1.1 Android中的Mashup/29
3.1.2 基於Mashup的Android套用模型/30
3.1.3 基於Mashup的套用架構特徵/32
3.2 界面組件Activity解析/34
3.2.1 界面組件的功能和特徵/34
3.2.2 界面組件的開發/35
3.2.3 界面組件的數據結構/39
3.3 服務組件Service解析/40
3.3.1 服務組件的功能和特徵/41
3.3.2 服務組件的開發和使用/43
3.3.3 服務組件的進程間通信模型/45
3.4 觸發器組件Broadcast Receiver解析/49
3.4.1 觸發器組件的功能和特徵/49
3.4.2 觸發器組件的使用/50
3.4.3 廣播事件的傳送/52
3.5 數據源組件Content Provider解析/52
3.5.1 數據源組件的定位和操作/53
3.5.2 數據源組件的開發/55
3.5.3 數據源組件的實現細節/57
3.6 套用配置檔案解析/59
3.6.1 許可權配置/61
3.6.2 環境配置/63
3.6.3 套用和組件配置/65
3.7 小結/66
第4章 Android的Intent機制/67
4.1 Intent對象的作用和構成/68
4.1.1 Intent對象的作用/69
4.1.2 Intent對象的構成/70
4.1.3 Intent對象解析/75
4.1.4 Intent Filter對象/76
4.2 意圖匹配/78
4.2.1 意圖匹配的算法流程/79
4.2.2 匹配組件的選擇/84
4.2.3 意圖匹配的最佳化/85
4.3 意圖機制的套用/86
4.3.1 意圖機制在界面組件中的套用/86
4.3.2 意圖機制在服務組件中的套用/88
4.3.3 意圖機制在觸發器組件中的套用/89
4.4 小結/90
第5章 組件生命周期解析/91
5.1 套用進程模型/92
5.1.1 套用、組件和進程/92
5.1.2 組件的套用進程配置/94
5.2 套用進程託管/96
5.2.1 為什麼需要進程託管/97
5.2.2 進程優先權/97
5.2.3 進程回收算法/100
5.2.4 進程的強行終止/103
5.2.5 掌控進程的優先權/105
5.3 組件的生命周期模型/106
5.3.1 界面組件的生命周期/107
5.3.2 服務組件的生命周期/115
5.3.3 觸發器組件的生命周期/119
5.3.4 數據源組件的生命周期/120
5.3.5 套用環境的生命周期/120
5.4 任務和界面組件棧/120
5.4.1 界面組件的運行模式/122
5.4.2 組件的任務黏度/126
5.4.3 實際套用中的任務控制/127
5.5 小結/128
第6章 組件間的數據傳輸/129
6.1 利用Intent對象進行數據傳輸/130
6.1.1 利用Intent對象回傳數據/131
6.1.2 利用Intent對象傳遞數據的優缺點/133
6.2 利用檔案進行數據共享/134
6.2.1 利用檔案進行數據共享的實現/134
6.2.2 利用檔案進行數據共享的優缺點/135
6.3 利用套用環境的全局數據共享/136
6.3.1 利用套用環境對象共享數據的實現/137
6.3.2 利用套用環境對象共享數據的優缺點/138
6.4 利用組件共享數據/139
6.4.1 利用數據源組件共享數據/139
6.4.2 利用服務組件共享數據/140
6.5 小結/140
第7章 Android控制項解析/141
7.1 Android的控制項框架/142
7.1.1 Android控制項構成/142
7.1.2 Android互動事件傳輸/143
7.1.3 Android控制項屬性/145
7.1.4 控制項的丈量和繪製/150
7.2 Android的視窗機制/150
7.2.1 視窗機制的基本原理/151
7.2.2 界面組件和視窗/152
7.2.3 對話框/154
7.2.4 彈出視窗/156
7.3 Android的基本控制項介紹/158
7.3.1 文本控制項/159
7.3.2 圖像控制項/163
7.3.3 Surface控制項/164
7.3.4 Layout控制項/164
7.3.5 適配器控制項/167
7.3.6 選項卡控制項/172
7.3.7 瀏覽器控制項/173
7.4 自定義控制項/175
7.4.1 控制項的定製/175
7.4.2 複合控制項/180
7.4.3 自繪控制項/183
7.5 Android界面新發展/188
7.5.1 動作欄/188
7.5.2 界面片段/191
7.5.3 重新定製選項卡/197
7.5.4 互動界面的適配/200
7.6 小結/204
第8章 套用資源/205
8.1 Android套用資源體系/206
8.1.1 Android的套用資源構成/206
8.1.2 套用資源的適配/208
8.1.3 套用資源的動態匹配/209
8.2 套用資源的調用/213
8.2.1 套用資源的編譯和R類/213
8.2.2 套用資源的管理/215
8.2.3 使用套用資源/216
8.3 套用資源的類型/217
8.3.1 界面和樣式/217
8.3.2 字元串和常量/221
8.3.3 圖像、圖形和動畫/223
8.3.4 其他資源檔案/225
8.4 小結/225
第9章 數據存儲/226
9.1 Android的檔案系統/227
9.1.1 Android的目錄結構/229
9.1.2 Android的套用數據存儲/229
9.1.3 Android的檔案操作/231
9.2 使用設定檔案/233
9.2.1 設定檔案的存儲和使用/234
9.2.2 設定界面組件/235
9.3 使用資料庫/238
9.3.1 Android資料庫實現/238
9.3.2 Android資料庫的使用/240
9.4 存儲在雲端/243
9.4.1 雲端存儲的架構/244
9.4.2 雲端存儲的使用/245
9.5 小結/247
第10章 網路通信/248
10.1 Web通信/249
10.1.1 基於HTTP的網路連線/249
10.1.2 聯網方式的選擇/252
10.1.3 WiFi的管理/254
10.2 藍牙/256
10.2.1 Android的藍牙實現/256
10.2.2 基於藍牙的通信/257
10.3 近場通信/259
10.3.1 基於NFC的識別和通信/259
10.3.2 基於NFC的點對點通信/263
10.4 基於WiFi連線的P2P通信/263
10.4.1 Android 4.0的P2P連線實現/264
10.4.2 使用Socket進行數據傳輸/266
10.5 小結/268
第11章 地理信息服務/269
11.1 Android的定位服務/270
11.1.1 定位服務框架/270
11.1.2 位置信息源/272
11.1.3 定位選擇/273
11.1.4 定位實例/274
11.2 Android的地址服務/277
11.2.1 地址服務的框架/277
11.2.2 使用地址服務/278
11.3 Android的地圖服務/279
11.3.1 使用地圖/279
11.3.2 其他使用地圖服務的方式/282
11.4 小結/283
第12章 多媒體處理/284
12.1 Android的圖像處理/285
12.1.1 圖像的表示/285
12.1.2 圖像的讀取和輸出/286
12.1.3 圖像的呈現/288
12.1.4 圖像的管理/290
12.2 Android的音視頻處理/291
12.2.1 Android音視頻的支持框架/291
12.2.2 Android音視頻的播放/292
12.2.3 Android音視頻的錄製/294
12.3 Android中相機的使用/296
12.4 小結/300
第13章 其他重要模組/301
13.1 通話和簡訊/302
13.1.1 Android的通話和簡訊框架/302
13.1.2 通話的處理/303
13.1.3 簡訊的傳送和接收/305
13.2 App Widget的使用和實現/308
13.2.1 Android的App Widget框架/309
13.2.2 App Widget的界面構造和Remote Views /311
13.2.3 App Widget的事件處理和Pending Intent /313
13.3 Android的套用內搜尋/317
13.3.1 Android套用內搜尋實現框架/317
13.3.2 為套用定製搜尋功能/318
13.3.3 全局搜尋功能/322
13.4 Android的全局通知機制/323
13.4.1 全局通知的類型和實現/324
13.4.2 Toast的使用/325
13.4.3 狀態欄通知/327
13.5 Android聯繫人處理/331
13.5.1 Android聯繫人數據存儲框架/331
13.5.2 Android聯繫人操作/332
13.6 小結/334
內容摘錄
4.1.2 Intent對象的構成
Intent對象的這些作用,都是通過它的實現和設計體現出來的。從數據結構來看,Intent類的實現非常簡單,它並沒有包含複雜的邏輯功能,只是包含著若干個數據項。
Action項
在日常生活中描述自己的意願或願望時,總是用一個表達動作的詞作為意願的核心。比如:我要吃飯、我想寫書、我要做伏地挺身,等等,其中的“吃”、“寫”、“做”都是在說明整個意願的動作,是整個意願表達的核心之一。 在Intent中,Action就是用來表達動作的。當調用組件指明了一個Action,執行組件就會依照這個動作的指示,接受相關的輸入,執行對應的操作,生成所期望的輸出。在實現上,Action是一個字元串,可以調用Intent.setAction函式為Intent對象指定一個動作,也可以通過Intent.getAction函式讀取Intent對象中的動作信息。為了保持動作的唯一性和實現的可擴展性,Action的命名格式遵循Java包的命名規範,比如可以這樣自定義一個表示“吃”的動作:com.duguhome.sample.action.ACTION_EAT,其中,com.duguhome.sample是套用的包名,action表示定義的是一個Action動作,而ACTION_EAT,則具體指明了該動作的含義。在Android的Intent類中,定義了很多標準的動作,比如:Intent.ACTION_VIEW、Intent.ACTION_PICK等。這些標準動作約定了Android組件間的通信規範,保證了組件系統的可擴展性,使得那些相互獨立的組件能夠通過這些標準的Action信息彼此溝通。如果系統預設的這些“標準動作”不能滿足套用的需求,則各個套用都可以自行定義擴展。但與這些“標準動作”相比,自定義的Action不常用在跨套用的通信中,而僅套用於內部組件的通信。