-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入理解Android:卷II

( 簡體 字)
作者:作者:鄧凡平 著類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:機械工業出版社深入理解Android:卷II 3dWoo書號: 33377
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:8/1/2012
頁數:440
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787111389187
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

本書主要內容及特色

本書是筆者“深入理解Android”系列的第二本,這一本將關注重點放在了Android Framework的Java層。在眾多可供分析的知識點中,筆者另辟蹊徑,選擇了SystemServer中的服務(Service)作為主人公。這些Service大體可由圖1來表示。



圖1 SystemServer中的服務

由圖1可知,SystemServer中的服務可劃分為7大類共43項(包括Watchdog在內):

位于第一大類的是Android的核心服務,如ActivityManagerService、WindowManager-Service等。

位于第二大類的是和通信相關的服務,如Wifi的相關服務、Telephone的相關服務。

位于第三大類的是和系統功能相關的服務,如AudioService、MountService、UsbService等。

位于第四大類的是BatteryService、VibratorService等服務。

位于第五大類的是EntropyService、DiskStatsService、Watchdog等相對獨立的服務。

位于第六大類的是藍牙服務。

位于第七大類的是UI方面的服務,如狀態欄服務、通知管理服務等。

以上這些服務就是Android Framework Java層的核心。毫不夸張地說,它們也是Android系統的基石。另外,這些服務的內容遠非一本書所能囊括。作為Android Java層Framework分析的先頭部隊,本書涵蓋了以下內容:

第1章,介紹了閱讀本書需要做的一些準備工作,包括Android 4.0源碼的下載和編譯、Eclipse開發環境的搭建,以及Android系統進程(system_process)的調試等。

第2章,介紹了Java Binder和MessageQueue的實現。

第3章,介紹了SystemServer,并分析了圖1中第五類包含的服務的工作原理。這些服務包括EntropyService、DropBoxManagerService、DiskStatsService、DeviceStorageMonitorService、SamplingProfilerService和ClipboardService。

第4章,分析了PackageManagerService,該服務負責Android系統中的Package信息查詢和APK安裝、卸載、更新等方面的工作。

第5章,講解了PowerManagerService,它是Android中電源管理的核心服務。本章對其中的WakeLock、Power按鍵處理、BatteryStatsService和BatteryService都做了一番較為深入的分析。

第6章,以ActivityManagerService為分析重點,該服務是Android 的核心服務。本章對ActivityManagerService的啟動、Activity的創建和啟動、BroadcastReceiver的工作原理、Android中的進程管理等內容進行了較為深入的研究。

第7章,對ContentProvider的創建和啟動、SQLite相關知識、Cursor query和close的實現等進行了較為深入的分析。

第8章,以ContentService和AccountManagerService為分析對象,介紹了數據更新通知機制的實現、賬戶管理和數據同步等方面的知識。

圖1中的其他服務將會在“深入理解Android”系列的其他書中詳細分析。該系列書的規劃請見本書最后面的“深入理解Android系列圖書路線圖”。

本書以直接剖析源碼的方式進行講解,旨在引領讀者一步步深入于Android系統中相關模塊的內部原理,去理解它們是如何實現、如何工作的。在分析過程中,筆者根據個人研究Android代碼的心得,采用了精簡流程和逐個擊破的方法。同時,筆者還提出了一些難度不大的知識點、相關的補充閱讀資料,甚至筆者在實際項目中遇到的開放式問題,留給讀者自行研究和探討。總之,筆者希望讀者在閱讀完本書后,至少能有以下兩個收獲:

能從“基于Android并高于Android”的角度來看待和分析Android。

能初步具有大型復雜代碼的分析能力。

讀者對象

適合閱讀本書的讀者包括:

(1)Android應用開發工程師

雖然應用開發工程師平常接觸的多是Android SDK,但是只有更深入地理解了Android系統運行原理,才能寫出更健壯、更高效的模塊。

(2)Android系統開發工程師

系統開發工程師常常需要深入理解系統的運轉過程,而本書所涉及的內容正是他們在工作和學習中最想了解的。那些對具體服務(如ActivityManagerService、PackageManagerService)感興趣的讀者,也可以單刀直入,閱讀本書相關章節。

(3)對Android系統運行原理感興趣的讀者

這部分讀者需要具有基本的Android開發知識基礎。

如何閱讀本書

本書是針對Android源碼進行分析的,而源碼文件所在的路徑一般都很長,例如,文件AndroidRuntime.cpp的真實路徑是frameworks/base/core/jni/AndroidRuntime.cpp。為了行文方便,在各章節開頭,均把本章涉及的源碼路徑全部列出,而在具體分析源碼時,則只列出該源碼的文件名。例如:

[-->AndroidRuntime.cpp]

//這里是源碼和一些注釋

另外,本書在描述類之間的關系及函數調用流程上,使用了UML的靜態類圖及序列圖。UML是一個強大的工具,但它的建模規范過于煩瑣,為更簡單清晰地描述事情的本質,本書并未完全遵循UML的建模規范。這里僅舉一例,如圖2所示。





圖2 UML示例圖

在圖2中:

外部類內部的方框用于表示內部類。另外,“外部類A.內部類B”也用于表示內部類。

接口和普通類用同一種框圖表示。

本書所使用的UML圖都比較簡單,讀者不必花費大量時間專門學習UML。

這里有必要提醒一下,要閱讀此書,應具有Java基本知識。

另外,本書和《深入理解Android 卷I》(簡稱“卷I”)部分章節有一定聯系,主要集中在Binder和MessageQueue部分。讀者可將“卷I中”這部分內容作為補充閱讀資料來學習。卷I部分內容的電子版下載地址為: http://download.csdn.net/detail/hzbooks/3677793。

本書涉及的Android 4.0源碼以及一些開發工具的下載地址為:http://115.com/folder/fauqpj0t#Android-ICS-SOURCE-CODE。

勘誤和支持

由于作者的水平有限,加之寫作時間倉促,書中難免會出現一些錯誤或不準確的地方,懇請讀者批評和指正。若有問題,可通過郵箱或在博客上留言與筆者共同討論。筆者的聯系方式是:

郵箱:fanping.deng@gmail.com

博客:blog.csdn.net/innost、cnblogs.net/innost和http://my.oschina.net/innost/blog

致謝

本書即將付梓!首先要感謝楊福川編輯的大力支持。另外,要感謝本書的審稿編輯姜影。

再一次感謝我所在的中科創達(ThunderSoft)公司。有幸工作在這樣一個互相信任、互相鼓勵、平等和開放式的環境中,我才能完成本書。公司領導所給予的機會和挑戰,時時鞭策著我保持虛心學習的心態。此外,我所在團隊的各位同仁也給予了我不少支持和幫助。本書出版之日,將是我們團隊為之努力奮斗的Android系統高效、穩定運行于客戶手機之時!

一如既往地感謝妻子和家人,他們是我奮斗的動力。

謝謝在人生和職業道路上曾給予我指導的諸位師長。

當然,最應感謝的還是肯花費寶貴時間和精力關注本書的讀者,你們的意見和建議,將會使我獲得巨大的精神財富!



鄧凡平 于北京, 中科創達(ThunderSoft)公司
內容簡介:

本書是“深入理解Android”系列的第二本,第一本書上市后得到了廣大讀者的高度評價,在Android開發者社群內口口相傳。本書不僅繼承了第一本的優點、改正了其在細微處存在的一些不足,而且還在寫作的總體思想上進行了創新,更強調從系統設計者的角度去分析Android系統中各個模塊內部的實現原理和工作機制。從具體內容上講,本書的重點是Android Framework的Java層,對Java層涉及的核心模塊和服務進行了深入而細致的分析。通過本書,讀者不僅能對Android系統本身有更深入的理解,而且還能掌握分析大型復雜源代碼的能力。

全書共8章:第1章介紹了閱讀本書所需要做的準備工作,包括Android 4.0源碼的下載和編譯、Eclipse環境的搭建,以及Android系統進程(system_process)的調試等;第2章對Java Binder和MessageQueue的實現進行了深入分析;第3章詳細剖析了SystemServer的工作原理,這些服務包括EntropyService、DropboxManagerService、DiskStatsService、DeviceStorageMonitorService、SamplingProfilerService和ClipboardService;第4章對系統中負責Package信息查詢和APK安裝、卸載、更新等工作的服務PackageManagerService進行了詳細分析;第5章則對Android系統中負責電源管理的核心服務 PowerManagerService的原理進行了一番深入的分析;第6章以ActivityManagerService為分析重點,對它的啟動、Activity的創建和啟動、BroadcastReceiver的工作原理、Android中的進程管理等內容展開了較為深入的研究;第7章對ContentProvider的創建和啟動、SQLite、Cursor query和close的實現等進行了深入分析;第8章以ContentService和AccountManagerService為分析對象,介紹了數據更新通知機制的實現,以及賬戶管理和數據同步等相關知識。
目錄:

前 言

第1章 搭建Android源碼工作環境 / 1

1.1 Android系統架構 / 2

1.2 搭建開發環境 / 3

1.2.1 下載源碼 / 3

1.2.2 編譯源碼 / 4

1.2.3 利用Eclipse調試system_process / 5

1.3 本章小結 / 11

第2章 深入理解Java Binder和MessageQueue / 12

2.1 概述 / 13

2.2 Java層中的Binder架構分析 / 13

2.2.1 Binder架構總覽 / 13

2.2.2 初始化Java層Binder框架 / 14

2.2.3 addService實例分析 / 17

2.2.4 Java層Binder架構總結 / 26

2.3 心系兩界的MessageQueue / 27

2.3.1 MessageQueue的創建 / 27

2.3.2 提取消息 / 28

2.3.3 nativePollOnce函數分析 / 31

2.3.4 MessageQueue總結 / 41

2.4 本章小結 / 42

第3章 深入理解SystemServer / 44

3.1 概述 / 45

3.2 SystemServer分析 / 45

3.2.1 main函數分析 / 45

3.2.2 Service群英會 / 48

3.3 EntropyService分析 / 49

3.4 DropBoxManagerService分析 / 50

3.4.1 DBMS構造函數分析 / 51

3.4.2 dropbox日志文件的添加 / 51

3.4.3 DBMS和settings數據庫 / 56

3.5 DiskStatsService和DeviceStorageMonitorService分析 / 56

3.5.1 DiskStatsService分析 / 56

3.5.2 DeviceStorageManagerService分析 / 58

3.6 SamplingProfilerService分析 / 60

3.6.1 SamplingProfilerService構造函數分析 / 61

3.6.2 SamplingProfilerIntegration分析 / 62

3.7 ClipboardService分析 / 64

3.7.1 復制數據到剪貼板 / 64

3.7.2 從剪切板粘貼數據 / 67

3.7.3 CBS中的權限管理 / 69

3.8 本章小結 / 73

第4章 深入理解PackageManagerService / 74

4.1 概述 / 75

4.2 初識PackageManagerService / 76

4.3 PKMS的main函數分析 / 77

4.3.1 構造函數分析之前期準備工作 / 78

4.3.2 構造函數分析之掃描Package / 90

4.3.3 構造函數分析之掃尾工作 / 105

4.3.4 PKMS構造函數總結 / 105

4.4 APK Installation分析 / 105

4.4.1 adb install分析 / 105

4.4.2 pm分析 / 107

4.4.3 installPackageWithVerification函數分析 / 109

4.4.4 APK 安裝流程總結 / 121

4.4.5 Verification介紹 / 122

4.5 queryIntentActivities分析 / 124

4.5.1 Intent及IntentFilter介紹 / 124

4.5.2 Activity信息的管理 / 125

4.5.3 Intent 匹配查詢分析 / 128

4.5.4 queryIntentActivities總結 / 131

4.6 installd及UserManager介紹 / 131

4.6.1 installd介紹 / 131

4.6.2 UserManager介紹 / 136

4.7 本章學習指導 / 138

4.8 本章小結 / 138

第5章 深入理解PowerManagerService / 139

5.1 概述 / 140

5.2 初識PowerManagerService / 140

5.2.1 PMS構造函數分析 / 141

5.2.2 init分析 / 141

5.2.3 systemReady分析 / 147

5.2.4 BootComplete處理 / 148

5.2.5 初識PowerManagerService總結 / 149

5.3 PMS WakeLock分析 / 149

5.3.1 WakeLock客戶端分析 / 149

5.3.2 PMS acquireWakeLock分析 / 151

5.3.3 Power類及LightService類介紹 / 160

5.3.4 WakeLock總結 / 163

5.4 userActivity及Power按鍵處理分析 / 164

5.4.1 userActivity分析 / 164

5.4.2 Power按鍵處理分析 / 167

5.5 BatteryService及BatteryStatsService分析 / 168

5.5.1 BatteryService分析 / 169

5.5.2 BatteryStatsService分析 / 172

5.5.3 BatteryService及BatteryStatsService總結 / 182

5.6 本章學習指導 / 183

5.7 本章小結 / 183

第6章 深入理解ActivityManagerService / 184

6.1 概述 / 185

6.2 初識ActivityManagerService / 186

6.2.1 ActivityManagerService的main函數分析 / 187

6.2.2 AMS的 setSystemProcess分析 / 197

6.2.3 AMS的 installSystemProviders函數分析 / 202

6.2.4 AMS的 systemReady分析 / 211

6.2.5 初識ActivityManagerService總結 / 218

6.3 startActivity分析 / 219

6.3.1 從am說起 / 219

6.3.2 AMS的startActivityAndWait函數分析 / 221

6.3.3 startActivityLocked分析 / 230

6.4 Broadcast和BroadcastReceiver分析 / 265

6.4.1 registerReceiver流程分析 / 267

6.4.2 sendBroadcast流程分析 / 272

6.4.3 BROADCAST_INTENT_MSG消息處理函數 / 276

6.4.4 應用進程處理廣播分析 / 282

6.4.5 廣播處理總結 / 284

6.5 startService之按圖索驥 / 285

6.5.1 Service知識介紹 / 285

6.5.2 startService流程圖 / 286

6.6 AMS中的進程管理 / 287

6.6.1 Linux進程管理介紹 / 287

6.6.2 關于Android中的進程管理的介紹 / 289

6.6.3 AMS進程管理函數分析 / 294

6.6.4 AMS進程管理總結 / 305

6.7 App的 Crash處理 / 305

6.7.1 應用進程的Crash處理 / 306

6.7.2 AMS的handleApplicationCrash分析 / 306

6.7.3 AppDeathRecipient binderDied分析 / 309

6.7.4 App的Crash處理總結 / 313

6.8 本章學習指導 / 314

6.9 本章小結 / 315

第7章 深入理解ContentProvider / 316

7.1 概述 / 317

7.2 MediaProvider的啟動及創建 / 318

7.2.1 Context的getContentResolver函數分析 / 318

7.2.2 MediaStore.Image.Media的query函數分析 / 319

7.2.3 MediaProvider的啟動及創建總結 / 329

7.3 SQLite創建數據庫分析 / 330

7.3.1 SQLite及SQLiteDatabase家族 / 330

7.3.2 MediaProvider創建數據庫分析 / 335

7.3.3 SQLiteDatabase創建數據庫的分析總結 / 344

7.4 Cursor 的query函數的實現分析 / 345

7.4.1 提取query關鍵點 / 346

7.4.2 MediaProvider 的query分析 / 349

7.4.3 query關鍵點分析 / 356

7.4.4 Cursor query實現分析總結 / 368

7.5 Cursor close函數實現分析 / 368

7.5.1 客戶端close的分析 / 369

7.5.2 服務端close的分析 / 371

7.5.3 finalize函數分析 / 372

7.5.4 Cursor close函數總結 / 373

7.6 ContentResolver openAssetFileDescriptor函數分析 / 373

7.6.1 openAssetFileDescriptor之客戶端調用分析 / 374

7.6.2 ContentProvider的 openTypedAssetFile函數分析 / 376

7.6.3 跨進程傳遞文件描述符的探討 / 379

7.6.4 openAssetFileDescriptor函數分析總結 / 384

7.7 本章學習指導 / 384

7.8 本章小結 / 385

第8章 深入理解ContentService和AccountManagerService / 386

8.1 概述 / 387

8.2 數據更新通知機制分析 / 387

8.2.1 初識ContentService / 388

8.2.2 ContentResovler 的registerContentObserver分析 / 389

8.2.3 ContentResolver的 notifyChange分析 / 391

8.2.4 數據更新通知機制總結和深入探討 / 393

8.3 AccountManagerService分析 / 395

8.3.1 初識AccountManagerService / 396

8.3.2 AccountManager addAccount分析 / 402

8.3.3 AccountManagerService的分析總結 / 414

8.4 數據同步管理SyncManager分析 / 415

8.4.1 初識SyncManager / 415

8.4.2 ContentResolver 的requestSync分析 / 424

8.4.3 數據同步管理SyncManager分析總結 / 436

8.5 本章學習指導 / 437

8.6 本章小結 / 437

“深入理解Android”系列書籍的規劃路線圖 / 438
序: