發表於2024-11-19
經典暢銷書係“深入理解Android”係列Framework捲完結篇,數十萬Android開發工程師翹首以盼
從源代碼層麵全麵、詳細剖析瞭Android 框架UI係統的實現原理和工作機製,以及優秀代碼的設計思想,填補市場空白
要想充分理解並用好Android係統,沒有捷徑,從它的源代碼入手是好的辦法。早在2011年,我們就洞察到瞭廣大Android開發者的這一需求,於是我們與國內知名的Android技術專傢鄧凡平先生一起規劃瞭這套“深入理解Android”叢書。從一開始,我們就對這套書有係統的規劃(詳見本書的推薦序),對整個Android係統做瞭細粒度的劃分,涵蓋Android係統的每一個模塊和細節。目前,這套書已經齣版5本,在市場上引起瞭強烈的反響,幾乎成為深入、係統瞭解Android工作原理的必讀之書。
《深入理解Android(捲3)》是該係列Framework捲的第III捲,分析的主要對象是Android係統的UI,這應該是目前該領域係統和深入的資料。
《深入理解Android(捲3)》是Android經典暢銷書係“深入理解Android”係列Framework捲的第III捲,從源代碼的角度,對Android係統的Audio和UI兩大功能的相關模塊的實現原理和工作機製做瞭係統且詳細的分析,填補瞭市場的空白。
《深入理解Android(捲3)》在邏輯上分為4個部分:
Part 01(第1~2章):這是本書的基礎部分,首先介紹瞭Android源碼環境的搭建、編譯和調試;然後講解瞭Android進程間通信與任務調度的工具Binder與MessageQueue。這兩項基礎工作是深入研究Android前必須做的功課。
Part 02(第3章):詳細分析瞭AudioService服務的實現,包括音量管理、音頻外設管理、AudioFocus機製的實現等內容。
Part 03(第4~6章):這是本書的核心內容之一,詳細分析瞭Android UI的通用實現,依次剖析瞭WindowManagerService、Android輸入係統、Android控件係統的工作原理。
Part 04(第7~8章):主要分析瞭SystemUI和Android壁紙相關服務的實現,包括StatusBarManagerService與NotificationManagerService兩個係統服務,以及WallpaperManagerService係統服務、動態壁紙與靜態壁紙的工作原理等內容。
除此之外,在對海量的Android源代碼進行分析的過程中,本書盡可能地對其中的精妙之處進行瞭分析和解讀,目的是希望幫助讀者領悟其中的優秀設計思想和方法。
張大偉,資深Android係統開發工程師,現就職於索尼移動。從2011年開始從事Android開發,專注於Android係統源代碼的研究、定製與維護工作,對Android的架構設計與運行原理有著深入的認識與實踐經驗,其中對UI相關模塊、多媒體係統尤為擅長。曾主持瞭Android多窗口、多任務以及單手操作等係統定製的開發工作。此外對於其他開發平颱如.NET亦有相當的經驗。
推薦序
前 言
第1章 開發環境部署1
1.1獲取Android源代碼1
1.2Android的編譯3
1.3在IDE中導入Android源代碼4
1.3.1將Android源代碼導入Eclipse4
1.3.2將Android源代碼導入SourceInsight5
1.4調試Android源代碼6
1.4.1使用Eclipse調試Android Java源代碼6
1.4.2使用gdb調試Android C/C++源代碼8
1.5本章小結9
第2章深入理解Java Binder和MessageQueue10
2.1概述11
2.2Java層中的Binder分析11
2.2.1Binder架構總覽11
2.2.2初始化Java層Binder框架13
2.2.3窺一斑,可見全豹乎16
2.2.4理解AIDL25
2.2.5Java層Binder架構總結28
2.3心係兩界的MessageQueue28
2.3.1MessageQueue的創建29
2.3.2提取消息29
2.3.3nativePollOnce函數分析32
2.3.4MessageQueue總結42
2.4本章小結44
第3章 深入理解AudioService45
3.1概述46
3.2音量管理47
3.2.1音量鍵的處理流程47
3.2.2通用的音量設置函數setStreamVolume()61
3.2.3靜音控製63
3.2.4音量控製小結67
3.3音頻外設的管理68
3.3.1 WiredAccessoryObserver 設備狀態的監控68
3.3.2AudioService的外設狀態管理73
3.3.3音頻外設管理小結78
3.4AudioFocus機製的實現78
3.4.1AudioFocus最簡單的例子79
3.4.2AudioFocus實現原理簡介81
3.4.3申請AudioFocus82
3.4.4釋放AudioFocus86
3.4.5AudioFocus小結87
3.5AudioService的其他功能88
3.6本章小結89
第4章 深入理解WindowManager-Service90
4.1初識WindowManagerService91
4.1.1一個從命令行啓動的動畫窗口91
4.1.2WMS的構成99
4.1.3初識WMS的小結103
4.2WMS的窗口管理結構104
4.2.1理解WindowToken107
4.2.2理解WindowState111
4.2.3理解DisplayContent112
4.3理解窗口的顯示次序112
4.3.1主序、子序和窗口類型112
4.3.2通過主序與子序確定窗口的次序114
4.3.3更新顯示次序到Surface119
4.3.4關於顯示次序的小結119
4.4窗口的布局119
4.4.1從relayoutWindow()開始120
4.4.2布局操作的外圍代碼分析124
4.4.3初探performLayoutAndPlace-SurfacesLockedInner()127
4.4.4布局的前期處理128
4.4.5布局DisplayContent130
4.4.6布局的最終階段150
4.5WMS的動畫係統150
4.5.1Android動畫原理簡介151
4.5.2WMS的動畫係統框架155
4.5.3WindowAnimator分析156
4.5.4深入理解窗口動畫160
4.5.5交替運行的布局係統與動畫係統173
4.5.6動畫係統總結174
4.6本章小結174
第5章 深入理解Android輸入係統176
5.1初識Android輸入係統177
5.1.1getevent與sendevent工具178
5.1.2Android輸入係統簡介179
5.1.3IMS的構成181
5.2原始事件的讀取與加工185
5.2.1基礎知識:INotify與Epoll186
5.2.2 InputReader的總體流程189
5.2.3 深入理解EventHub191
5.2.4 深入理解InputReader205
5.2.5原始事件的讀取與加工總結225
5.3輸入事件的派發225
5.3.1通用事件派發流程226
5.3.2按鍵事件的派發237
5.3.3DispatcherPolicy與InputFilter247
5.3.4輸入事件的派發總結250
5.4輸入事件的發送、接收與反饋250
5.4.1深入理解InputChannel251
5.4.2連接InputDispatcher和窗口252
5.4.3事件的發送260
5.4.4事件的接收263
5.4.5事件的反饋與發送循環264
5.4.6輸入事件的發送、接收與反饋總結267
5.5關於輸入係統的其他重要話題267
5.5.1輸入事件ANR的産生267
5.5.2 焦點窗口的確定270
5.5.3以軟件方式模擬用戶操作273
5.6本章小結273
第6章 深入理解控件係統275
6.1 初識Android的控件係統276
6.1.1 另一種創建窗口的方法277
6.1.2 控件係統的組成278
6.2 深入理解WindowManager279
6.2.1 WindowManager的創建與體係結構279
6.2.2 通過WindowManagerGlobal添加窗口282
6.2.3 更新窗口的布局284
6.2.4 刪除窗口285
6.2.5 WindowManager的總結285
6.3 深入理解ViewRootImpl286
6.3.1 ViewRootImpl的創建及其重要的成員286
6.3.2 控件係統的心跳:performTraversals()290
6.3.3 ViewRootImpl總結317
6.4 深入理解控件樹的繪製317
6.4.1 理解Canvas317
6.4.2 View.invalidate()與髒區域320
6.4.3 開始繪製321
6.4.4 軟件繪製的原理323
6.4.5 硬件加速繪製的原理334
6.4.6 使用繪圖緩存346
6.4.7 控件動畫356
6.4.8 繪製控件樹的總結360
6.5 深入理解輸入事件的派發361
6.5.1 觸摸模式361
6.5.2 控件焦點363
6.5.3 輸入事件派發的綜述376
6.5.4 按鍵事件的派發381
6.5.5 觸摸事件的派發388
6.5.6 輸入事件派發的總結404
6.6 Activity與控件係統405
6.6.1 理解PhoneWindow405
6.6.2 Activity窗口的創建與顯示414
6.7 本章小結416
第7章 深入理解SystemUI418
7.1 初識SystemUI419
7.1.1 SystemUIService的啓動420
7.1.2 狀態欄與導航欄的創建422
7.1.3 理解IStatusBarService425
7.1.4 SystemUI的體係結構427
7.2 深入理解狀態欄428
7.2.1 狀態欄窗口的創建與控件樹結構429
7.2.2 通知信息的管理與顯示434
7.2.3 係統狀態圖標區的管理與顯示448
7.2.4 狀態欄總結452
7.3 深入理解導航欄452
7.3.1 導航欄的創建453
7.3.2 虛擬按鍵的工作原理459
7.3.3 SearchPanel462
7.3.4 關於導航欄的其他話題465
7.3.5 導航欄總結471
7.4 禁用狀態欄與導航欄的功能472
7.4.1 如何禁用狀態欄與導航欄的功能472
7.4.2 StatusBarManagerService對禁用標記的維護473
7.4.3 狀態欄與導航欄對禁用標記的響應474
7.5 理解SystemUIVisibility475
7.5.1 SystemUIVisibility在係統中的漫遊過程476
7.5.2 SystemUIVisibility發揮作用482
7.5.3 SystemUIVisibility總結494
7.6 本章小結495
第8章 深入理解Android壁紙496
8.1 初識Android壁紙497
8.2深入理解動態壁紙498
8.2.1啓動動態壁紙的方法498
8.2.2壁紙服務的啓動原理498
8.2.3 理解UpdateSurface()方法510
8.2.4 壁紙的銷毀515
8.2.5 理解Engine的迴調516
8.3 深入理解靜態壁紙—ImageWallpaper519
8.3.1 獲取用作靜態壁紙的位圖519
8.3.2 靜態壁紙位圖的設置522
8.3.3 連接靜態壁紙的設置與獲取—WallpaperObserver524
8.4 WMS對壁紙窗口的特殊處理526
8.4.1 壁紙窗口Z序的確定527
8.4.2 壁紙窗口的可見性533
8.4.3 壁紙窗口的動畫535
8.4.4 壁紙窗口總結538
8.5 本章小結539
Foreword 推 薦 序
迴顧
今天是一個值得高興的日子。曆經兩年多的艱苦奮鬥,張大偉同學的這本著作,同時也是“深入理解Android”係列三捲中的最後一捲終於完成瞭。從2011年我和華章公司的楊福川編輯一起開創這一迄今為止國內Android技術書籍市場上唯一一套兼具廣度和深度的“深入理解Android”係列書籍算起,四個年頭已經過去。在這四年中,本係列書籍的作者們和齣版社的編輯們共同奮鬥,成果斐然:
2011年9月《深入理解Android:捲I》發布。
2012年8月《深入理解Android:捲II》發布。
2013年1月,本係列的第一本專題捲《深入理解Android:Telephony原理剖析與最佳實踐》發布,作者是楊青平。
2014年4月,本係列的第二本專題捲《深入理解Android:Wi-Fi,NFC和GPS捲》發布。
2015年,《深入理解Android:捲III》發布,作者即是本書的主人公張大偉。
2015年及以後,我們還要發布“深入理解Android”係列書籍中的WebKit專題捲、自動化測試捲、藍牙專題捲等。
從技術層麵來說,本書填補瞭深入理解Android Framework捲中的一個主要空白,即Android Framework中和UI相關的部分。在一個特彆講究“顔值”的時代,本書分析瞭Android 4.2中WindowManagerService、ViewRoot、Input係統、StatusBar、Wallpaper等重要“顔值繪製/處理”模塊。雖然在寫書的兩年中,Android版本已經從4.2進化到M,但“麵雖新,神依在”。所以,我可以很負責任地說,對那些掌握瞭本書精髓的讀者而言,即使Android未來升級到瞭X,那也隻不過是換瞭一個“馬甲”罷瞭。
展望
我在《深入理解Android:捲II》中曾經詳細闡述過“深入理解Android”這一係列的路綫圖(http://blog.csdn.net/innost/article/details/7648869)。
本係列書大體分為應用部分、Framework部分、專題部分和內核部分。
1)應用部分。這部分擬以Android源碼中自帶的那些應用程序為分析目標,充分展示Google在自傢SDK平颱上進行應用開發的深厚功力。這些應用包括Contacts、Gallery2、Mms、Browser等,它們的分析難度都不可小覷。通過對這些係齣名門的應用的分析,我們希望讀者不僅能把握商業級應用程序開發的精髓,更能精確熟練地掌握Android應用開發的各種技能。
2)Framework部分。關注Android的框架,包括三本書。
捲I:以Native層Framework模塊為分析對象。知識點包括init、binder、zygote、jni、Message和Handler、audio係統、surface係統、vold、rild和mediascanner。本書已於2011年9月齣版,雖然是基於Android 2.2,讀者如若紮實地掌握並理解瞭其中的內容,那麼以後再研究Android 2.3或4.0版本中對應的模塊,也是輕而易舉之事瞭。
捲II和捲III:以Java層Framework模塊為分析對象。捲II基於4.0.1版,包括UI相關服務和Window係統之外的一些重要服務,如PackageManagerService、ActivityManagerService、PowerManagerService、ContentService、ContentProvider等。而的捲III將以輸入係統、WindowManagerService、UI相關服務為主要目標。
Framework部分這3本書的目的是讓讀者對整個Android係統有較大廣度、一定深度的認識,這有益於讀者構建一個更為完整的Android係統知識結構。應當指齣,這3本書不可能覆蓋Android Framework中的所有知識點。因此,尚需讀者在此基礎上,結閤不同需求,進行進一步的深入研究。
3)專題部分。這部分旨在幫助讀者沿著Android平颱中的某一些專業方嚮,進行深度挖掘,這一部分擬規劃如下專題:
Telephony專題,涵蓋SystemServer中相關的通信服務、rild、短信、電話等模塊。
多媒體專題,涵蓋MultiMedia相關的模塊,包括Stagefright、OMX等。另外,我們也打算引入開源世界中最流行的一些編解碼引擎和播放引擎作為分析對象。
瀏覽器和Webkit專題,該專題難度非常大,但其重要性卻不言而喻。
Dalvik虛擬機專題,該專題希望對Dalvik進行一番深度研究,涉及麵包括Java虛擬機的實現、Android的一些特殊定製等內容。現在來看,Dalvik已經被ART替換,所以這本書的目標就應該是ART虛擬機專題瞭。
Android係統安全專題,該專題的目標是,分析Android係統上提供的安全方麵的控製機製。另外,Linux平颱上的一些常用安全機製(例如,文件係統加密等)也是本書所要考慮的。這套安全專題我已經在自己的博客上寫瞭部分內容,包括Java Security、設備加密等。
UI/UE設計以及心理學專題,該專題希望能提供一些心理學方麵的指導以及具體的UI/UE設計方麵的指南,以幫助開發人員開發齣更美、更體貼和更方便的應用。
專題部分隱含著的一個極為重要的宗旨:即基於Android,而高於Android。換言之,這些書籍雖都以Android為切入點,但我們更希望讀者學到的知識、掌握的技術不局限於Android平颱。
4) 內核部分。這部分擬以Linux內核為主。雖然這方麵的經典教材非常多,但要麼是諸如《Linux內核情景分析》之類的鴻篇巨帙,要麼是類似《Linux內核設計與實現》,內容過於簡潔。另外,現有書籍使用的內核源碼都比較陳舊。為此,我們希望能有一本難度適中、知識麵較廣、深度適宜的書籍。
今天,正是由於大偉的努力,我們的Framework部分得以完美收官。高興的同時,我們認為前路依然艱辛。在此,我和福川兄再次誠摯邀請國內外有熱情、願分享、有責任心的兄弟姐妹們來一起繼續發揚光大“深入理解Android”這一係列書籍。
還是楊瀾的那句話,“原來我隻佩服成功的人,現在我更尊敬那些正在努力的人”。讓我們一起成為被尊敬的人吧!
軼事
我和大偉相知相識的過程還頗有點意思。
那時我們都在中科創達工作,有一次,我們倆要一起重構一個和音頻相關的解碼模塊。當時我劈劈啪啪把幾段和多綫程相關的同步代碼塊改寫後,引起瞭大偉的強烈質疑。在質疑(challenge)和爭論(argue)的過程中,我發現大 深入理解Android(捲3) 下載 mobi epub pdf txt 電子書 格式
深入理解Android(捲3) 下載 mobi pdf epub txt 電子書 格式 2024
深入理解Android(捲3) 下載 mobi epub pdf 電子書不錯,挺好,正在看
評分這本書zhi'liang'ke'kao
評分深入理解android 捲1捲2捲3 都還可以 其他的 wifi那本還算不錯,還有一些基本就屬於騙錢的瞭。我退瞭好幾本瞭已經。
評分很不錯的書,一看就是正版,以後還會繼續購物噠!
評分書還不錯,是本不錯的android書。包裝也還可以。
評分Gghgggggggg啦咯啦咯啦咯啦
評分雙十一滿減活動買的,收藏以後看。
評分價格實惠,服務好,值得購買。
評分audio ui部分
深入理解Android(捲3) mobi epub pdf txt 電子書 格式下載 2024