| > 书名: | 深入理解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,往往停留在表面的交互和功能的认知上。我们知道如何创建一个界面,如何调用一个API,但对于它背后那庞大的体系,以及它如何与更广阔的计算机世界和互联网相连接,却知之甚少。这本《深入理解Android:卷I 计算机与互联网》就像一把钥匙,为我打开了通往Android系统核心的大门。它并没有局限于Android本身,而是将Android置于计算机科学和互联网的宏大叙事中进行解读。我特别喜欢书中对“计算”和“连接”这两个核心概念的阐释,以及它们如何在Android系统中得到体现。它让我明白,Android不仅仅是一个移动操作系统,它更是现代计算和互联网基础设施的重要组成部分。书中对各种协议、数据格式、通信机制的讲解,虽然初看之下有些理论性,但随着阅读的深入,我发现它们是理解Android应用如何与其他设备、服务器以及整个互联网进行交互的基础。这种从宏观到微观,从背景到细节的梳理,让我对Android的认知不再碎片化,而是形成了一个更加完整和连贯的图景。我开始能够从更本质的层面去思考Android应用的开发和优化,这对我而言,是一次非常宝贵的知识升级。
评分读一本书,尤其是技术类书籍,最怕的就是枯燥乏味。我一直认为,好的技术图书,应该像一位循循善诱的老师,用通俗易懂的语言,将复杂的概念抽丝剥茧,让你在不知不觉中便豁然开朗。这本《深入理解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神秘的面纱。
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
评分不错,买三之后接着买的
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有