Android開發精要

Android開發精要

《Android開發精要》是2012年機械工業出版社出版的圖書,作者是范懷宇。該書講述的是如何才能寫出貼近Android設計理念、能夠更加高效和可靠運行的Android套用,通過Android的原始碼去了解其底層實現細節是最重要的方法之一。

基本信息

作者: 范懷宇

出版年: 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不常用在跨套用的通信中,而僅套用於內部組件的通信。

相關詞條

相關搜尋

熱門詞條

聯絡我們