安卓学习资料推荐《深入理解Android:卷2》下载
下载地址:百度云下载地址
编辑推荐
《深入理解Android:卷2》编辑推荐:经典畅销书《深入理解Android:卷I》姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐!从系统设计者的角度对Java Framework包含的重要模块和服务的源代码进行细致剖析,深刻揭示其实现原理和工作机制。
媒体推荐
市面上关于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开发工程师和系统工程师,热衷于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”系列书籍的规划路线图
序言
前言:
本书主要内容及特色
本书是笔者“深入理解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 卷III》第五章 深入理解Android输入系统
<深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白.即Android Framework中和UI相关的部分. ...
- 《深入理解Android 卷III》第二章 深入理解Java Binder和MessageQueue
<深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...
- 《深入理解Android 卷III》第七章 深入理解SystemUI
<深入理解Android 卷III>即将公布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...
- 《深入理解Android 卷III》第四章 深入理解WindowManagerService
<深入理解Android 卷III>即将公布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白.即Android Framework中和UI相关的部分. ...
- 《深入理解Android 卷III》第八章深入理解Android壁纸
<深入理解Android 卷III>即将公布,作者是张大伟. 此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分 ...
- 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统
<深入理解Android 卷III>即将公布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...
- 【原】Storm学习资料推荐
4.Storm学习资料推荐 书籍: 英文: Learning Storm: Ankit Jain, Anand Nalya: 9781783981328: Amazon.com: Books Gett ...
- 【原】Redis学习资料推荐
Redis学习资料推荐 网址: Redis官网http://redis.io/ Redis命令 http://redis.io/commands Redis教程 https://www.tutoria ...
- GitHub上的计算机视觉学习资料推荐
9月份将要读研,导师是做cv的,最近学习时找到了不少的计算机视觉的资料,记录一下,同时也分享给需要的朋友 assmdx/ComputerVisionDoc AceCoooool/interview-c ...
随机推荐
- wpf 绑定表达式和手动更新源
<Window x:Class="BindingExpressionExam.MainWindow" xmlns="http://schemas.mi ...
- jquery 显示图片
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Assertion failure in UITableViewCell layoutSublayersOfLayer解决办法
iOS6 设备在更新UITableViewCell的时候遇到了 Assertion failure in -[UITableViewCell layoutSublayersOfLayer:], /So ...
- centos 6.5 搭建ftp 服务器(vsftpd的配置文件说明)
0x00 如何快速的搭建简易的资源发布站 开启简易的python http服务器 1 2 cd /home/your_path python -m SimpleHTTPServer 8000 开启防火 ...
- PHPstudy + phpstrom +xdebug 断点调试(windows) - CSDN博客
原文:PHPstudy + phpstrom +xdebug 断点调试(windows) - CSDN博客 php.ini 配置 需要添加如下内容 [XDebug]xdebug.profiler_ou ...
- Android零基础入门第88节:Fragment显示和隐藏、绑定和解绑
在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加.移除和替换,本期一起来学习Fragment显示和隐藏.绑定和解绑. ...
- QT 序列化/串行化/对象持久化
本文以一个实例讲解Qt的序列化方法: Qt版本 4.8.0 Qt序列化简介 Qt采用QDataStream来实现序列化,QT针对不同的实例化对象有不同的要求.这里主要分两类,即:QT中原生的数据类型, ...
- C++迭代器 iterator
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...
- VC 函数调用的 汇编代码 浅析
摘要:主要谈谈vc里面函数调用汇编成汇编代码的情形,首先针对之前的一个小程序,说说vc编译器的优化. 例子程序: #include <iostream>using namespace st ...
- delphi 读写文本文件(函数比较全)
需要两个按钮和两个Richedit控件,采用默认名称即可. procedure TForm1.Button1Click(Sender: TObject); //写文件 var wText: Text ...