第一图书网

深入理解Android

邓凡平 机械工业出版社
出版时间:

2012-8  

出版社:

机械工业出版社  

作者:

邓凡平  

页数:

440  

Tag标签:

无  

前言

前言:本书主要内容及特色 本书是笔者“深入理解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:卷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相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究。

书籍目录

前言
第1章 搭建Android源码工作环境
1.1 Android系统架构
1.2 搭建开发环境
1.2.1 下载源码
1.2.2 编译源码
1.2.3 利用Eclipse调试system_process
1.3 本章小结
第2章 深入理解Java Binder和MessageQueue
2.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 心系两界的MessageQueue
2.3.1 MessageQueue的创建
2.3.2 提取消息
2.3.3 nativePollOnce函数分析
2.3.4 MessageQueue总结
2.4 本章小结
第3章 深入理解SystemServer
3.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章 深入理解PackageManagerService
4.1 概述
4.2 初识PackageManagerService
4.3 PKMS的main函数分析
4.3.1 构造函数分析之前期准备工作
4.3.2 构造函数分析之扫描Package
4.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章 深入理解PowerManagerService
5.1 概述
5.2 初识PowerManagerService
5.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章 深入理解ActivityManagerService
6.1 概述
6.2 初识ActivityManagerService
6.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章 深入理解ContentProvider
7.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和AccountManagerService
8.1 概述
8.2 数据更新通知机制分析
8.2.1 初识ContentService
8.2.2 ContentResovler 的registerContentObserver分析
8.2.3 ContentResolver的 notifyChange分析
8.2.4 数据更新通知机制总结和深入探讨
8.3 AccountManagerService分析
8.3.1 初识AccountManagerService
8.3.2 AccountManager addAccount分析
8.3.3 AccountManagerService的分析总结
8.4 数据同步管理SyncManager分析
8.4.1 初识SyncManager
8.4.2 ContentResolver 的requestSync分析
8.4.3 数据同步管理SyncManager分析总结
8.5 本章学习指导
8.6 本章小结
“深入理解Android”系列书籍的规划路线图

章节摘录

版权页: 插图: 2.IntentFilter介绍 “求职方”需要填写IntentFilter来表达自己的诉求。Android规定了3项内容。 Action:“求职方”支持的Intent动作(和Intent中的Action对应)。 Category:“求职方”支持的Intent种类(和Intent的Category对应)。 Data:求职方支持的Intent数据(和Intent的Data对应,包括URI和MIME类型)。 至此,猎头公司已有了需求,现在又有了求职者的信息,马上要做的工作就是匹配查询。在Android中,该工作被称为Intent Resolution。由于现在及未来人才都是最宝贵的资源,因此猎头公司在做匹配工作时,将以Intent Filter列出的3项内容为参考标准,具体步骤如下: 首先匹配IntentFilter的Action,如果Intent设置的Action不满足IntentFilter的Action,则匹配失败。如果IntentFilter未设定Action,则匹配成功。 然后检查IntentFilter的Category,匹配方法同Action的匹配,唯一有些例外的是Category为CATEGORY_DEFAULT的情况。 最后检查Data。Data的匹配过程比较烦琐,因为它和IntentFilter设置的Data内容有关,见接下来的介绍。 IntentFilter中的Data可以包括两个内容。 URI:完整格式为“scheme://host:port/path”,包含4个部分,scheme、host、port和path。其中host和port合起来标识URI authority,用于指明服务器的网络地址(IP加端口号)。由于uri最多可包含4个部分,因此要根据情况相应部分做匹配检查。Date type:指定数据的MIME类型。 要特别注意的是,uri中也可以携带数据的类型信息,所以在匹配过程中,还需要考虑uri中指定的数据类型。 提示关于具体的匹配流程,请读者务必阅读SDK docs/guide/topics/intents/intents-filters.html中的说明。 4.5.2 Activity信息的管理 前面在介绍PKMS扫描APK时提到,PKMS将解析得到的package私有的Activity信息加入到自己的数据结构mActivities中保存。

媒体关注与评论

市面上关于Android源码分析的书非常多,但是没有一本书的分析粒度像本书这样细致。Android系统本身非常庞大,源代码错综复杂,的确很难想象仅靠一本书就能透彻分析整个系统的原理。“深入理解Android”系列图书考虑到了这一点,于是每一本书只专注于一个大的主题,卷I和卷II关注的都是Android的框架层,卷I针对的是Native Framework,卷II针对的是Java Framework。如果想从Android系统设计者的角度彻底理解整个系统的架构思想和设计原理,以及系统中各个服务和模块之间错综复杂的关系,“深入理解Android”系列图书应该是目前最好的选择之一!——51CTO移动开发频道“深入理解Android”系列的卷I上市后,既叫好,又叫座,在Android开发者圈子里反响强烈。从Android源代码分析的角度来讲,该系列书从内容和分析方法上确实值得称道,不仅能体现作者的技术水准,而且能看出作者的用心良苦。在内容细节和作者自己对Android系统的认识深入程度上,卷II在卷I更上一层楼,内容更加精彩。不仅深入地分析了Java Framework层各种服务和模块的工作原理和实现机制,而且还理清了它们之间的关系。对于想提高Android开发水平的读者来说,本书值得反复研读!——开源中国社区


编辑推荐

《深入理解Android:卷2》编辑推荐:经典畅销书《深入理解Android:卷I》姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐!从系统设计者的角度对Java Framework包含的重要模块和服务的源代码进行细致剖析,深刻揭示其实现原理和工作机制。

图书封面

图书标签Tags

广告

下载页面


深入理解Android PDF格式下载



Android深入理解第二卷,很经典的一套书。


书的内容很不错,很适合研究android framework的人。


适合有android开发基础的人


是针对android4.0代码讲解的,不错!好书。


这是一本对了解Framework层非常实用的一本书,当当的物流也非常快,昨天下班才下的订单,上午就到了。


想深入了解系统的可以看看


讲的比较细,适合想深入了解的同学; 其它的不说了,买了自己看吧,很不错的


学习andoird framework的好资料


内容详细,但门槛较高,需要有一定的基础知识才能理解。


适合看完一卷后再看


这本书是基于安卓4.0讲解的,与我现在的工作比较吻合


卷1写得很好,卷2应当不错,只是尚未翻阅,不便评论。


还在看卷一,但是卷一不错卷二也应该可以吧~书的质量很好


刚入门 等多做几个小项目练习后在研究研究


很好的一本书。正在研究。


想扩展自己的研究层面的一本书


经典中的经典, 安卓必看


这本书讲得比较深 要有基础才看得懂


适合希望提高水平成为高手的开发者


书不错,内容灰常好,有帮助,就是书的质量稍微差点~ 总体很不错,值得入手~加油


准备阅读准备阅读


很好,认真阅读中...


需要点时间来阅读


没有直径,不懂E文,只有靠看走在技术前沿的书。


如果没有接触过底层,可以看看,讲的还是比较清晰的,虽然有一部分我也没太看懂


书是正版,很满意,享用中


纸张和内容还不错。


正在看,内容非常好


这个作为工具用书 感觉很好 发货也快 一直选择当当网


还是能学到不少东西的,建议购买


刚收到就来确认了,书不错,当当物流也很满意,全5分,没的说。


too much copy


是正版,很好,上午10点订的,下午3点就到了,真TM快


帮LG买的工具书,希望对他有帮助。


看了第一册感觉还好


Famewok必看


第一本很好,就买了第二本老大要求必须看的书,所以还是买了!


书非常好,就是有点深奥。


书不错哦,印刷差点


听别人说很好,买来先收藏。


说实在的,学习android这种开源的东西,如果有比较好的功底,还是研究源码比较好,自己研究了,自己才能理解。


当当服务真的是很到位,然后评价一下这书,这书android讲得深了些,对于初级朋友看,建议不太适合。


对于android底层开发人员有很大帮助


详细介绍了framework层的内容


对基础服务的运行过程进行了分析。


还不错吧,比较深入,部分内容不太好懂


准备入手学习Andoid。这个书介绍的不错。只有了解系统运作,才能更好地用好Andoid


这次都是服务类的


挺好的,适合有一定开发基础的人购买。


纸张没有卷一来的好,感觉看起来不是很舒服.快递倒是很快.晚上订的隔天早上就来了


慕名买的,看过卷一,卷二应该也不错


书忒难了,自以为工作3年,可以自如的看懂,发现自己对这底层无比陌生。得慢慢沉下心来消化了


没仔细看,不过觉得内容挺不错。


内容较深!适合搞研究!


看完后再做详细评论


终于拿到这本书了,粗略浏览了下正是想要了解的内容,真心不错


有深度,需要一定基础 适合细细研读


需要更深层次了解的,才需要看


内容够深,纸质略差


内容整体还是满意,就是印刷纸张有点差,


还不错,再看中....


买了很久了,一直没时间看


书写的不错,学习引导


送货员态度不怎么样


书的纸张看着还可以!


我订单上写的清清楚楚,货到付款,POS机刷卡,当我领书的时候却告知要现金。又要专门去取一次(之前就估算好日期,等着发了工资一起取的)


书不错,开始看


第二卷明显没多少内容。 让我对这个作者很失望。都急着捞钱。


大概粗略的看了一遍,就是把源码加了一点注释。想看的关键代码都没有怎么讲,都是讲了些边边角角的内容,


全是讲C++,深奥点了,没有做到浅显易懂,不建议看。


此卷2主要讲了android系统的几个服务,内容较少不够充实,跟卷1比,差距比很大。冲着卷1的好评买的,但是这个卷2比较失望。


对于我来说有些困难了,主要是没时间细读


基本上就是简单的带读者浏览下源代码,简单解释下实现,这些实现,即使自己看也能看懂的,不难,多花些时间而已,所谓深入应该是知其所以然,也就是说说架构上为啥要这样设计,好处到底有哪些,剖析其好处和弊端以及对系统层和一个用层的影响,单纯的浏览源代码,总觉得算不上深入


卷1的补充。写的还可以,但不如卷1。


书还不错,可惜没有附带光盘。


纸张不错,卖的比1贵,内容比1少。


这本不错。。。。。。。


自己水平有限,写的很深奥啊,过段时间在读


虽然是同事,但是书籍确实很一般


不错的书,推荐,很给力


还不错,书本新,送货快


s深入理解android


这是一本android产品开发的好书。


挺好的,他的第一本我也买了。


Android mechanic


相关图书