TOP
紅利積點抵現金,消費購書更貼心
深入理解Android:卷II(簡體書)
滿額折

深入理解Android:卷II(簡體書)

商品資訊

人民幣定價:79 元
定價
:NT$ 474 元
優惠價
87412
絕版無法訂購
商品簡介
作者簡介
名人/編輯推薦
目次
書摘/試閱

商品簡介

《深入理解Android:卷2》是“深入理解Android”系列的第2本,第1本書上市後獲得廣大讀者高度評價,在Android開發者社群內口口相傳。本書不僅繼承了第1本書的優點並改正了其在細微處存在的一些不足,而且還在寫作的總體思想上進行了創新,更強調從系統設計者的角度去分析Android系統中各個模塊內部的實現原理和工作機制。從具體內容上講,本書的重點是Android Framework的Java層,對Java層涉及的核心模塊和服務進行了深入而細緻的分析。通過本書,讀者不僅能對Android系統本身有更深入的理解,而且還能掌握分析大型複雜源代碼的能力。《深入理解Android:卷2》一共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為分析對象,介紹了數據更新通知機制的實現,以及賬戶管理和數據同步等相關知識。·

作者簡介

鄧凡平,資深Android開發工程師和系統工程師,熱衷於Android源代碼的研究,對Android的架構設計和實現原理有非常深刻的認識和理解,經驗十分豐富。《深入理解Android:卷I》的作者,同時也是“深入理解Android”系列圖書的總策劃。目前就職於國內領先的Android企業中科創達(ThunderSoft),負責Android Framework的開發和維護。喜歡鑽研,樂於分享,活躍於CSDN、51CTO和開源中國等專業技術社區,撰寫的Android Framework源碼分析的系列文章深受讀者歡迎。此外,他對Linux內核、C/C++/Python相關的技術,以及高性能網絡服務器和多核並行開發等也有一定的研究。·

名人/編輯推薦

《深入理解Android:卷2》編輯推薦:經典暢銷書《深入理解Android:卷I》姊妹篇,51CTO移動開發頻道和開源中國社區一致鼎力推薦!從系統設計者的角度對Java Framework包含的重要模塊和服務的源代碼進行細致剖析,深刻揭示其實現原理和工作機制。

目次

前言第1章 搭建Android源碼工作環境1.1 Android系統架構1.2 搭建開發環境1.2.1 下載源碼1.2.2 編譯源碼1.2.3 利用Eclipse調試system_process1.3 本章小結第2章 深入理解Java Binder和MessageQueue2.1 概述2.2 Java層中的Binder架構分析2.2.1 Binder架構總覽2.2.2 初始化Java層Binder框架2.2.3 addService實例分析2.2.4 Java層Binder架構總結2.3 心系兩界的MessageQueue2.3.1 MessageQueue的創建2.3.2 提取消息2.3.3 nativePollOnce函數分析2.3.4 MessageQueue總結2.4 本章小結第3章 深入理解SystemServer3.1 概述3.2 SystemServer分析3.2.1 main函數分析3.2.2 Service群英會3.3 EntropyService分析3.4 DropBoxManagerService分析3.4.1 DBMS構造函數分析3.4.2 dropbox日志文件的添加3.4.3 DBMS和settings數據庫3.5 DiskStatsService和DeviceStorageMonitorService分析3.5.1 DiskStatsService分析3.5.2 DeviceStorageManagerService分析3.6 SamplingProfilerService分析3.6.1 SamplingProfilerService構造函數分析3.6.2 SamplingProfilerIntegration分析3.7 ClipboardService分析3.7.1 複製數據到剪貼板3.7.2 從剪切板粘貼數據3.7.3 CBS中的權限管理3.8 本章小結第4章 深入理解PackageManagerService4.1 概述4.2 初識PackageManagerService4.3 PKMS的main函數分析4.3.1 構造函數分析之前期準備工作4.3.2 構造函數分析之掃描Package4.3.3 構造函數分析之掃尾工作4.3.4 PKMS構造函數總結4.4 APK Installation分析4.4.1 adb install分析4.4.2 pm分析4.4.3 installPackageWithVerification函數分析4.4.4 APK 安裝流程總結4.4.5 Verification介紹4.5 queryIntentActivities分析4.5.1 Intent及IntentFilter介紹4.5.2 Activity信息的管理4.5.3 Intent 匹配查詢分析4.5.4 queryIntentActivities總結4.6 installd及UserManager介紹4.6.1 installd介紹4.6.2 UserManager介紹4.7 本章學習指導4.8 本章小結第5章 深入理解PowerManagerService5.1 概述5.2 初識PowerManagerService5.2.1 PMS構造函數分析5.2.2 init分析5.2.3 systemReady分析5.2.4 BootComplete處理5.2.5 初識PowerManagerService總結5.3 PMS WakeLock分析5.3.1 WakeLock客戶端分析5.3.2 PMS acquireWakeLock分析5.3.3 Power類及LightService類介紹5.3.4 WakeLock總結5.4 userActivity及Power按鍵處理分析5.4.1 userActivity分析5.4.2 Power按鍵處理分析5.5 BatteryService及BatteryStatsService分析5.5.1 BatteryService分析5.5.2 BatteryStatsService分析5.5.3 BatteryService及BatteryStatsService總結5.6 本章學習指導5.7 本章小結第6章 深入理解ActivityManagerService6.1 概述6.2 初識ActivityManagerService6.2.1 ActivityManagerService的main函數分析6.2.2 AMS的 setSystemProcess分析6.2.3 AMS的 installSystemProviders函數分析6.2.4 AMS的 systemReady分析6.2.5 初識ActivityManagerService總結6.3 startActivity分析6.3.1 從am說起6.3.2 AMS的startActivityAndWait函數分析6.3.3 startActivityLocked分析6.4 Broadcast和BroadcastReceiver分析6.4.1 registerReceiver流程分析6.4.2 sendBroadcast流程分析6.4.3 BROADCAST_INTENT_MSG消息處理函數6.4.4 應用進程處理廣播分析6.4.5 廣播處理總結6.5 startService之按圖索驥6.5.1 Service知識介紹6.5.2 startService流程圖6.6 AMS中的進程管理6.6.1 Linux進程管理介紹6.6.2 關於Android中的進程管理的介紹6.6.3 AMS進程管理函數分析6.6.4 AMS進程管理總結6.7 App的 Crash處理6.7.1 應用進程的Crash處理6.7.2 AMS的handleApplicationCrash分析6.7.3 AppDeathRecipient binderDied分析6.7.4 App的Crash處理總結6.8 本章學習指導6.9 本章小結第7章 深入理解ContentProvider7.1 概述7.2 MediaProvider的啟動及創建7.2.1 Context的getContentResolver函數分析7.2.2 MediaStore.Image.Media的query函數分析7.2.3 MediaProvider的啟動及創建總結7.3 SQLite創建數據庫分析7.3.1 SQLite及SQLiteDatabase家族7.3.2 MediaProvider創建數據庫分析7.3.3 SQLiteDatabase創建數據庫的分析總結7.4 Cursor 的query函數的實現分析7.4.1 提取query關鍵點7.4.2 MediaProvider 的query分析7.4.3 query關鍵點分析7.4.4 Cursor query實現分析總結7.5 Cursor close函數實現分析7.5.1 客戶端close的分析7.5.2 服務端close的分析7.5.3 finalize函數分析7.5.4 Cursor close函數總結7.6 ContentResolver openAssetFileDescriptor函數分析7.6.1 openAssetFileDescriptor之客戶端調用分析7.6.2 ContentProvider的 openTypedAssetFile函數分析7.6.3 跨進程傳遞文件描述符的探討7.6.4 openAssetFileDescriptor函數分析總結7.7 本章學習指導7.8 本章小結第8章 深入理解ContentService和AccountManagerService8.1 概述8.2 數據更新通知機制分析8.2.1 初識ContentService8.2.2 ContentResovler 的registerContentObserver分析8.2.3 ContentResolver的 notifyChange分析8.2.4 數據更新通知機制總結和深入探討8.3 AccountManagerService分析8.3.1 初識AccountManagerService8.3.2 AccountManager addAccount分析8.3.3 AccountManagerService的分析總結8.4 數據同步管理SyncManager分析8.4.1 初識SyncManager8.4.2 ContentResolver 的requestSync分析8.4.3 數據同步管理SyncManager分析總結8.5 本章學習指導8.6 本章小結“深入理解Android”系列書籍的規劃路線圖·

書摘/試閱

前言:
本書主要內容及特色
本書是筆者“深入理解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)公司

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 412
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區