| > 書名: | 深入理解Android:捲I[按需印刷]|198566 |
| > 圖書定價: | 69元 |
| > 圖書作者: | 鄧凡平 |
| > 齣版社: | 機械工業齣版社 |
| > 齣版日期: | 2011/9/1 0:00:00 |
| > ISBN號: | 9787111357629 |
| > 開本: | 16開 |
| > 頁數: | 488 |
| > 版次: | 1-1 |
| 作者簡介 |
| 鄧凡平,資深Android開發工程師,熱衷於Android源代碼的研究,對Android的架構設計和實現原理有非常深刻的認識和理解,應用開發經驗也十分豐富。目前就職於國內一傢領先的Android企業,負責Framework的開發和維護。樂於分享,活躍於CSDN等專業社區,撰寫的Android Framework源碼的係列文章深受讀者歡迎。此外,他對Linux內核、C/C++/Python相關的技術,以及高性能網絡服務器和多核並行開發等也有一定的研究。 |
| 內容簡介 |
| 《深入理解Android:捲1》是一本以情景方式對Android的源代碼進行深入分析的書。內容廣泛,以對Framework層的分析為主,兼顧Native層和Application層;分析深入,每一部分源代碼的分析都力求透徹;針對性強,注重實際應用開發需求,書中所涵蓋的知識點都是Android應用開發者和係統開發者需要重點掌握的。 全書共10章,第1章介紹瞭閱讀本書所需要做的準備工作,主要包括對Android係統架構和源碼閱讀方法的介紹;第2章通過對Android係統中的MediaScanner進行分析,詳細講解瞭Android中十分重要的JNI技術;第3章分析瞭init進程,揭示瞭通過解析init.rc來啓動Zygote以及屬性服務的工作原理;第4章分析瞭Zygote、SystemServer等進程的工作機製,同時還討論瞭Android的啓動速度、虛擬機HeapSize的大小調整、Watchdog工作原理等問題;第5章講解瞭Android係統中常用的類,包括sp、wp、RefBase、Thread等類,同步類,以及Java中的Handler類和Looper類,掌握這些類的知識後方能在後續的代碼分析中做到遊刃有餘;第6章以MediaServer為切入點,對Android中極為重要的Binder進行瞭較為全麵的分析,深刻揭示瞭其本質。第7章對Audio係統進行瞭深入的分析,尤其是AudioTrack、AudioFlinger和AudioPolicyService等的工作原理。第8章深入講解瞭Surface係統的實現原理,分析瞭Surface與Activity之間以及Surface與SurfaceFlinger之間的關係、SurfaceFlinger的工作原理、Surface係統中的幀數據傳輸以及LayerBuffer的工作流程。第9章對Vold和Rild的原理和機製進行瞭深入的分析,同時還探討瞭Phone設計優化的問題;第10章分析瞭多媒體係統中MediaScanner的工作原理。 本書適閤有一定基礎的Android應用開發工程師和係統工程師閱讀。通過對本書的學習,大傢將能更深刻地理解Android係統,從而自如應對實際開發中遇到的難題。 |
| 目錄 |
《深入理解Android:捲1》 第1章 閱讀前的準備工作 / 1 1.1 係統架構 / 2 1.1.1 Android係統架構 / 2 1.1.2 本書的架構 / 3 1.2 搭建開發環境 / 4 1.2.1 下載源碼 / 4 1.2.2 編譯源碼 / 6 1.3 工具介紹 / 8 1.3.1 Source Insight介紹 / 8 1.3.3 Busybox的使用 / 11 1.4 本章小結 / 12 第2章 深入理解JNI / 13 2.1 JNI概述 / 14 2.2 學習JNI的實例:MediaScanner / 15 2.3 Java層的MediaScanner分析 / 16 2.3.1 加載JNI庫 / 16 2.3.2 Java的native函數和總結 / 17 2.4 JNI層MediaScanner的分析 / 17 2.4.1 注冊JNI函數 / 18 2.4.2 數據類型轉換 / 22 2.4.3 JNIEnv介紹 / 24 2.4.4 通過JNIEnv操作jobject / 25 2.4.5 jstring介紹 / 27 2.4.6 JNI類型簽名介紹 / 28 2.4.7 垃圾迴收 / 29 2.4.8 JNI中的異常處理 / 32 2.5 本章小結 / 32 第3章 深入理解init / 33 3.1 概述 / 34 3.2 init分析 / 34 3.2.1 解析配置文件 / 38 3.2.2 解析service / 42 3.2.3 init控製service / 48 3.2.4 屬性服務 / 52 3.3 本章小結 / 60 第4章 深入理解zygote / 61 4.1 概述 / 62 4.2 zygote分析 / 62 4.2.1 AppRuntime分析 / 63 4.2.2 Welcome to Java World / 68 4.2.3 關於zygote的總結 / 74 4.3 SystemServer分析 / 74 4.3.1 SystemServer的誕生 / 74 4.3.2 SystemServer的重要使命 / 77 4.3.3 關於 SystemServer的總結 / 83 4.4 zygote的分裂 / 84 4.4.1 ActivityManagerService發送請求 / 84 4.4.2 有求必應之響應請求 / 86 4.4.3 關於zygote分裂的總結 / 88 4.5 拓展思考 / 88 4.5.1 虛擬機heapsize的限製 / 88 4.5.2 開機速度優化 / 89 4.5.3 Watchdog分析 / 90 4.6 本章小結 / 93 第5章 深入理解常見類 / 95 5.1 概述 / 96 5.2 以“三闆斧”揭秘RefBase、sp和wp / 96 5.2.1 [第0一]闆斧——初識影子對象 / 96 5.2.2 第二闆斧——由弱生強 / 103 5.2.3 第三闆斧——破解生死魔咒 / 106 5.2.4 輕量級的引用計數控製類LightRefBase / 108 5.2.5 題外話—三闆斧的來曆 / 109 5.3 Thread類及常用同步類分析 / 109 5.3.1 一個變量引發的思考 / 109 5.3.2 常用同步類 / 114 5.4 Looper和Handler類分析 / 121 5.4.1 Looper類分析 / 122 5.4.2 Handler分析 / 124 5.4.3 Looper和Handler的同步關係 / 127 5.4.4 HandlerThread介紹 / 129 5.5 本章小結 / 129 第6章 深入理解Binder / 130 6.1 概述 / 131 6.2 庖丁解MediaServer / 132 6.2.1 MediaServer的入口函數 / 132 6.2.2 [獨0一0無0二]的ProcessState / 133 6.2.3 時空穿越魔術—defaultServiceManager / 134 6.2.4 注冊MediaPlayerService / 142 6.2.5 鞦風掃落葉—StartThread Pool和join Thread Pool分析 / 149 6.2.6 你徹底明白瞭嗎 / 152 6.3 服務總管ServiceManager / 152 6.3.1 ServiceManager的原理 / 152 6.3.2 服務的注冊 / 155 6.3.3 ServiceManager存在的意義 / 158 6.4 MediaPlayerService和它的Client / 158 6.4.1 查詢ServiceManager / 158 6.4.2 子承父業 / 159 6.5 拓展思考 / 162 6.5.1 Binder和綫程的關係 / 162 6.5.2 有人情味的訃告 / 163 6.5.3 匿名Service / 165 6.6 學以緻用 / 166 6.6.1 純Native的Service / 166 6.6.2 扶得起的“阿鬥”(aidl) / 169 6.7 本章小結 / 172 第7章 深入理解Audio係統 / 173 7.1 概述 / 174 7.2 AudioTrack的破解 / 174 7.2.1 用例介紹 / 174 7.2.2 AudioTrack(Java空間)分析 / 179 7.2.3 AudioTrack(Native空間)分析 / 188 7.2.4 關於AudioTrack的總結 / 200 7.3 AudioFlinger的破解 / 200 7.3.1 AudioFlinger的誕生 / 200 7.3.2 通過流程分析AudioFlinger / 204 7.3.3 audio_track_cblk_t分析 / 230 7.3.4 關於AudioFlinger的總結 / 234 7.4 AudioPolicyService的破解 / 234 7.4.1 AudioPolicyService的創建 / 235 7.4.2 重迴AudioTrack / 245 7.4.3 聲音路由切換實例分析 / 251 7.4.4 關於AudioPolicy的總結 / 262 7.5 拓展思考 / 262 7.5.1 DuplicatingThread破解 / 262 7.5.2 題外話 / 270 7.6 本章小結 / 272 第8章 深入理解Surface係統 / 273 8.1 概述 / 275 8.2 一個Activity的顯示 / 275 8.2.1 Activity的創建 / 275 8.2.2 Activity的UI繪製 / 294 8.2.3 關於Activity的總結 / 296 8.3 初識Surface / 297 8.3.1 和Surface有關的流程總結 / 297 8.3.2 Surface之乾坤大挪移 / 298 8.3.3 乾坤大挪移的JNI層分析 / 303 8.3.4 Surface和畫圖 / 307 8.3.5 初識Surface小結 / 309 8.4 深入分析Surface / 310 8.4.1 與Surface相關的基礎知識介紹 / 310 8.4.2 SurfaceCom [p0o0s] erClient分析 / 315 8.4.3 SurfaceControl分析 / 320 8.4.4 writeToParcel和Surface對象的創建 / 331 8.4.5 lockCanvas和unlockCanvasAndPost分析 / 335 8.4.6 GraphicBuffer介紹 / 344 8.4.7 深入分析Surface的總結 / 353 8.5 SurfaceFlinger分析 / 353 8.5.1 SurfaceFlinger的誕生 / 354 8.5.2 SF工作綫程分析 / 359 8.5.3 Transaction分析 / 368 8.5.4 關於SurfaceFlinger的總結 / 376 8.6 拓展思考 / 377 8.6.1 Surface係統的CB對象分析 / 377 8.6.2 ViewRoot的你問我答 / 384 8.6.3 LayerBuffer分析 / 385 8.7 本章小結 / 394 第9章 深入理解Vold和Rild / 395 9.1 概述 / 396 9.2 Vold的原理與機製分析 / 396 9.2.1 Netlink和Uevent介紹 / 397 9.2.2 初識Vold / 399 9.2.3 NetlinkManager模塊分析 / 400 9.2.4 VolumeManager模塊分析 / 408 9.2.5 CommandListener模塊分析 / 414 9.2.6 Vold實例分析 / 417 9.2.7 關於Vold的總結 / 428 9.3 Rild的原理與機製分析 / 428 9.3.1 初識Rild / 430 9.3.2 RIL_startEventLoop分析 / 432 9.3.3 RIL_Init分析 / 437 9.3.4 RIL_register分析 / 444 9.3.5 關於Rild main函數的總結 / 447 9.3.6 Rild實例分析 / 447 9.3.7 關於Rild的總結 / 459 9.4 拓展思考 / 459 9.4.1 嵌入式係統的存儲知識介紹 / 459 9.4.2 Rild和Phone的改進探討 / 462 9.5 本章小結 / 463 第10章 深入理解MediaScanner / 464 10.1 概述 / 465 10.2 android.process.media分析 / 465 10.2.1 MSR模塊分析 / 466 10.2.2 MSS模塊分析 / 467 10.2.3 android.process.media媒體掃描工作的流程總結 / 471 10.3 MediaScanner分析 / 472 10.3.1 Java層分析 / 472 10.3.2 JNI層分析 / 476 10.3.3 PVMediaScanner分析 / 479 10.3.4 關於MediaScanner的總結 / 485 10.4 拓展思考 / 486 10.4.1 MediaScannerConnection介紹 / 486 10.4.2 我問你答 / 487 10.5 本章小結 / 488 |
| 編輯推薦 |
| 作者是Thundersoft多媒體組的牛人,技術精深,樂於分享,對Android係統有真正的理解。《深入理解Android:捲1》內容給力,語言生動,全書沒有一句廢話,各章中的“拓展思考”尤為精彩,體現瞭作者對Android實現原理的深入理解和批判性思考。為什麼Android的短信群發很慢?為什麼拔齣SD卡時有的程序會退齣?讀者都能從本書中找到諸如此類的各種實際問題的答案。更重要的是,讀者能夠對Android的整個體係有一個全新的理解。如果你通讀瞭這本書,請一定投一份簡曆給我們。 ——Thundersoft(中科創達軟件科技(北京)有限公司) 對於Android開發工程師而言,本書不可多得,分析透徹深入,針對性極強。Android係統本身極為龐大,如果要對整個係統進行麵麵俱到且細緻入微地分析,恐怕不是一兩本書能完成的。本書從開發者的實際需求齣發,有針對性地對Android係統中的重要知識點和功能模塊的源代碼實現進行瞭剖析,這樣既能幫助開發者解決實際問題,又能使分析深入透徹,而不是停留於錶麵。強烈推薦! ——機鋒網(http://www.gfan.com/) 這本書非常實用,絕不是枯燥的源代碼分析,是深入理解Android工作機製和實現原理的一本好書。為什麼說它實用呢?因為它的[zui]終目的並不是停留著源代碼分析上,而是要幫助開發者解決實際問題,於是所有知識點的分析和講解都是從開發者的實際需求齣發的。與一般的源代碼分析的書相比較而言,本書在語言上多瞭幾分幽默,更加生動易懂。更重要的是,本書的分析十分深入,探討瞭Android相關功能模塊的本質。 ——51CTO移動開發頻道(http://mobile.51cto.com/) 隨著Android 係統越來越流行,Android應用的需求也在不斷變化,對於開發者而言,深入理解Android係統原理顯得越來越重要。目前市麵上Android 開發相關的圖書已經很多,但真正能夠係統、深入地講解Android係統原理的書還乏善可陳。這本書的齣版恰逢其時,該書同時兼備深度和廣度,以循序漸進的方式,優雅的語言,深入分析到各個模塊的源碼與原理。另外,它啓發性的講解方式,更有助於讀者的學習和思考。 ——開源中國社區(http://www.oschina.net/) |
讀一本書,尤其是技術類書籍,最怕的就是枯燥乏味。我一直認為,好的技術圖書,應該像一位循循善誘的老師,用通俗易懂的語言,將復雜的概念抽絲剝繭,讓你在不知不覺中便豁然開朗。這本《深入理解Android:捲I 計算機與互聯網》給我的感覺正是如此。我並非一個技術大牛,很多時候,接觸到一些過於專業的術語,很容易就感到挫敗。但這本書的處理方式卻讓我眼前一亮。它並沒有迴避專業詞匯,但卻通過大量的類比、圖示,以及引人入勝的敘述風格,將那些看似晦澀的原理講得生動形象。例如,在解釋某個底層機製時,作者會巧妙地引入一個生活中的場景,讓你從熟悉的角度去理解陌生的概念。這種“潤物細無聲”的教學方式,讓我非常享受閱讀的過程。我常常能在一章看完後,發現自己不僅理解瞭某個技術點,還對整個計算機科學的某些基礎有瞭更深的認識。這本書並非隻是簡單地傳遞信息,它更是在培養一種思考的習慣,一種解決問題的思路。我驚喜地發現,原來很多睏擾我的技術難題,一旦從更基礎的原理上去分析,便迎刃而解。這種閱讀體驗,遠比那些直接教你“怎麼做”的書籍,更有價值,也更令人迴味。
評分在這個信息爆炸的時代,獲取知識的途徑多種多樣,但真正能夠沉下心來,為你構建起紮實知識體係的書籍,卻越來越顯得彌足珍貴。我選擇閱讀《深入理解Android:捲I 計算機與互聯網》,很大程度上是齣於一種“逆潮流而動”的決心。我看到很多開發者都在忙著追逐最新的技術框架和炫酷的功能,而我卻希望能夠迴過頭來,重新審視Android係統本身的核心。這本書恰恰滿足瞭我的這種需求。它沒有過多地去渲染那些華而不實的應用層麵的東西,而是將重點放在瞭計算機底層和互聯網架構上。這種“返璞歸真”的姿態,讓我覺得非常踏實。在閱讀的過程中,我仿佛置身於一個知識的礦藏中,每一章都像是在挖掘齣寶貴的礦石。我驚喜地發現,書中對網絡通信原理的闡述,對於我理解Android應用的聯網功能,有著極大的啓發;而對操作係統內存管理和進程調度機製的講解,則讓我對Android應用的性能瓶頸有瞭更深的洞察。這本書並不提供現成的“銀彈”,它更多的是提供瞭一種思考框架和分析工具,讓你能夠自己去解決問題,去發現潛在的優化空間。這種“授人以漁”的方式,是我最看重的一點,也是讓我覺得這本書價值非凡的原因。
評分我一直相信,真正的“深入理解”並非僅僅是掌握某個框架的API,而是要能夠理解其背後的設計哲學和演進曆程。這本《深入理解Android:捲I 計算機與互聯網》帶給我的,正是這種超齣預期的深度。我之前接觸過一些關於Android開發的書籍,它們通常會詳細講解Activity、Fragment、Service等組件的用法,以及如何使用各種UI控件。這些內容固然重要,但往往止步於“是什麼”和“怎麼用”,而很少去探討“為什麼是這樣”。這本書則不然,它花費瞭相當大的篇幅去剖析Android係統是如何一步步演化而來的,它所處的計算和互聯網大背景又是如何深刻影響瞭它的設計。從最初的Linux內核,到Dalvik虛擬機(現在是ART),再到各種框架的引入,作者並沒有將這些知識點孤立地呈現,而是將它們串聯成一個有機整體。我尤其欣賞書中對“組件化”和“模塊化”設計思想的探討,這讓我對Android應用的架構有瞭全新的認識。我開始明白,為什麼一些大型應用能夠保持良好的可維護性和可擴展性,這背後其實有著深厚的理論支撐。這種從宏觀曆史和設計理念入手,再逐步深入到具體技術實現的路徑,讓我對Android係統有瞭一種“知其然,更知其所以然”的理解,這對我日後的開發工作,無疑具有指導性的意義。
評分一本好書的價值,常常不在於它是否填滿瞭你腦海中已有的知識空白,而在於它能否喚醒那些你曾忽略卻又至關重要的角落。就拿我最近淘到的這本《深入理解Android:捲I 計算機與互聯網》來說,雖然封麵上的“按需印刷”和一串編碼(書箱|198566)初看之下,或許會讓人聯想到一些粗糙的齣版物,但實際拿到手後,那厚實的分量和紙張的質感,就已經給瞭我一個不錯的開端。我並非Android開發的科班齣身,最初接觸這個領域,更多的是一種“摸著石頭過河”式的探索。市麵上關於Android的書籍琳琅滿目,但很多要麼過於淺顯,要麼過於偏重API的羅列,真正能讓我從更宏觀、更底層去理解Android係統運作機製的書,卻著實不多。當我翻開這本書時,最先吸引我的,並非直接的技術細節,而是其中對計算機基礎原理的梳理,以及互聯網技術在Android生態中的位置。我總覺得,如果對事物的基礎原理理解不透徹,那麼在應用層麵的技巧學習,就像是空中樓閣,難以穩固。這本書恰恰彌補瞭我在這方麵的知識短闆,它讓我重新審視瞭操作係統、網絡協議等在Android開發中的重要性,讓我明白,那些看似繁瑣的代碼背後,其實蘊藏著深刻的計算機科學思想。這種從宏觀到微觀,再從微觀迴溯宏觀的敘事方式,讓我感覺自己仿佛在進行一場思維的“考古”,一層層地揭開Android神秘的麵紗。
評分很多時候,我們對於一個復雜的係統,比如Android,往往停留在錶麵的交互和功能的認知上。我們知道如何創建一個界麵,如何調用一個API,但對於它背後那龐大的體係,以及它如何與更廣闊的計算機世界和互聯網相連接,卻知之甚少。這本《深入理解Android:捲I 計算機與互聯網》就像一把鑰匙,為我打開瞭通往Android係統核心的大門。它並沒有局限於Android本身,而是將Android置於計算機科學和互聯網的宏大敘事中進行解讀。我特彆喜歡書中對“計算”和“連接”這兩個核心概念的闡釋,以及它們如何在Android係統中得到體現。它讓我明白,Android不僅僅是一個移動操作係統,它更是現代計算和互聯網基礎設施的重要組成部分。書中對各種協議、數據格式、通信機製的講解,雖然初看之下有些理論性,但隨著閱讀的深入,我發現它們是理解Android應用如何與其他設備、服務器以及整個互聯網進行交互的基礎。這種從宏觀到微觀,從背景到細節的梳理,讓我對Android的認知不再碎片化,而是形成瞭一個更加完整和連貫的圖景。我開始能夠從更本質的層麵去思考Android應用的開發和優化,這對我而言,是一次非常寶貴的知識升級。
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
評分不錯,買三之後接著買的
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有