描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121304873
编辑推荐
基于Android源代码和实际开发案例分析,让读者在学习过程中进一步吃透源代码。
内容简介
本书基于Android 6.0源代码和实际案例,分析Android系统的框架原理和具体实现。由于Android框架里模块众多,本书只详细分析了框架里的一部分模块,涉及这些模块的原理、架构及代码实现等各个细节,尽量做到让读者知其然,又知其所以然。在Android官方网站,Android分了4层,从高到低分别是应用程序层、应用程序框架层、系统库层和Linux内核层。本书主要涉及应用程序层、应用程序框架层和系统库层。
目 录
部分 Android基础篇
第1章 Android简介 2
1.1 Android简介 2
1.2 阅读Android源代码 6
第2章 Android基础类 10
2.1 Android基础类简介 10
2.2 Thread类原理 11
2.3 Mutex与Condition 20
2.3.1 Mutex(AutoMutex)分析 20
2.3.2 Condition代码分析 24
2.4 Android系统智能指针 30
2.4.1 轻量级指针(lp) 30
2.4.2 强指针(sp) 32
第3章 Android上下文环境Context 37
3.1 Context简介 37
3.2 Application运行上下文环境Context的创建过程 40
3.2.1 创建Application Context 41
3.2.2 获得Application Context 47
3.3 Activity运行上下文环境Context的创建过程 48
3.4 Service运行上下文环境Context的创建过程 55
第4章 Android消息机制 59
4.1 Android消息机制原理 59
4.2 创建消息队列和进入消息循环过程 61
4.3 消息的发送过程 70
4.4 消息的处理过程 75
第二部分 Android框架篇
第5章 Android Init进程 78
5.1 Android Init进程简介 78
5.2 klog_init() 函数 83
5.3 process_kernel_cmdline() 函数 85
5.4 signal_handler_init() 函数 86
5.5 property_load_boot_defaults() 函数 89
5.6 属性服务 90
5.6.1 属性服务的初始化与启动 90
5.6.2 属性的设置 91
5.6.3 属性值的获取 95
5.7 解析init.rc配置文件和启动service进程 96
5.7.1 init.rc文件基础介绍 96
5.7.2 解析init.rc文件 100
5.7.3 启动service进程 104
第6章 开机动画bootanimation 108
6.1 开机动画bootanimation原理 108
6.2 开机动画bootanimation的显示过程 111
6.3 开机动画bootanimation的退出过程 127
第7章 Zygote进程 135
7.1 Zygote进程基础介绍 135
7.2 Zygote进程的启动 139
7.2.1 调用startVM() 函数启动虚拟机 143
7.2.2 调用startReg() 函数注册JNI方法 143
7.2.3 调用ZygoteInit类的main() 方法 145
7.3 启动system_server进程 150
7.4 启动APP应用程序进程 155
第8章 SystemServer进程 161
8.1 SystemServer系统服务 161
8.2 SystemServer创建框架核心服务 165
第9章 Android系统的开机与关机 175
9.1 Android系统的开机 175
9.2 Android系统的关机 185
9.3 案例分析 197
9.3.1 Android系统开机时间标志 197
9.3.2 Android系统关机时间标志 198
第10章 Android系统异常问题 199
10.1 addr2line工具 199
10.2 Android Watchdog 207
10.3 Android系统异常问题 217
10.3.1 Android死机 218
10.3.2 Android系统重启 220
10.3.3 Android系统启动异常 233
第11章 ActivityManagerService 236
11.1 ActivityManagerService简介 236
11.2 Activity的启动过程 240
11.2.1 Launcher Activity的onPause() 过程 241
11.2.2 Launcher Activity的onStop() 过程 261
11.2.3 新Activity的onCreate()、onStart()和onResume() 过程 264
11.3 Service的启动过程 273
11.4 Broadcast 280
11.4.1 广播的注册过程 282
11.4.2 广播的发送过程 290
11.4.3 广播的处理过程 295
11.5 进程内存管理 303
11.6 案例分析 320
11.6.1 与Activity有关的例子 320
11.6.2 与BroadCast有关的例子 323
11.6.3 与进程内存有关的例子 329
第12章 Android国际化 331
12.1 CTS与GTS 331
12.2 全球紧急电话策略 337
12.3 Android多语言 345
第三部分 Android ROM UI篇
第13章 Android资源管理系统 354
13.1 资源管理简介 354
13.2 资源初始化过程 361
13.2.1 AssetManager的构造方法 369
13.2.2 AssetManager.java的addAssetPath() 方法 374
13.2.3 Resources的构造方法 375
13.3 资源查找、解析、创建View过程 378
13.3.1 查找资源ID对应的不是文件的过程 380
13.3.2 查找资源ID对应的是文件的过程 382
13.4 主题换肤实现 396
第14章 Android View系统 411
14.1 View系统简介 411
14.2 应用程序Activity的创建 412
14.3 Activity窗口对象PhoneWindow的创建 424
14.4 Activity根视图对象DecorView的创建 432
14.5 ViewRootImpl的创建和添加DecorView对象 440
14.6 View的measure、layout和draw过程 453
14.6.1 View的measure过程 462
14.6.2 View的layout过程 473
14.6.3 View的draw过程 478
14.7 View事件分发 493
14.8 案例分析 503
第15章 Android控件 512
15.1 Android系统控件分析 512
15.1.1 系统控件简介 512
15.1.2 系统控件TextView的属性 514
15.1.3 系统控件TextView的onMeasure() 517
15.1.4 系统控件TextView的onLayout() 523
15.1.5 系统控件TextView的onDraw() 523
15.2 自定义控件 524
15.2.1 定义自定义控件属性 525
15.2.2 实现自定义控件 525
15.2.3 使用自定义控件 527
15.3 Android控件案例分析 527
第1章 Android简介 2
1.1 Android简介 2
1.2 阅读Android源代码 6
第2章 Android基础类 10
2.1 Android基础类简介 10
2.2 Thread类原理 11
2.3 Mutex与Condition 20
2.3.1 Mutex(AutoMutex)分析 20
2.3.2 Condition代码分析 24
2.4 Android系统智能指针 30
2.4.1 轻量级指针(lp) 30
2.4.2 强指针(sp) 32
第3章 Android上下文环境Context 37
3.1 Context简介 37
3.2 Application运行上下文环境Context的创建过程 40
3.2.1 创建Application Context 41
3.2.2 获得Application Context 47
3.3 Activity运行上下文环境Context的创建过程 48
3.4 Service运行上下文环境Context的创建过程 55
第4章 Android消息机制 59
4.1 Android消息机制原理 59
4.2 创建消息队列和进入消息循环过程 61
4.3 消息的发送过程 70
4.4 消息的处理过程 75
第二部分 Android框架篇
第5章 Android Init进程 78
5.1 Android Init进程简介 78
5.2 klog_init() 函数 83
5.3 process_kernel_cmdline() 函数 85
5.4 signal_handler_init() 函数 86
5.5 property_load_boot_defaults() 函数 89
5.6 属性服务 90
5.6.1 属性服务的初始化与启动 90
5.6.2 属性的设置 91
5.6.3 属性值的获取 95
5.7 解析init.rc配置文件和启动service进程 96
5.7.1 init.rc文件基础介绍 96
5.7.2 解析init.rc文件 100
5.7.3 启动service进程 104
第6章 开机动画bootanimation 108
6.1 开机动画bootanimation原理 108
6.2 开机动画bootanimation的显示过程 111
6.3 开机动画bootanimation的退出过程 127
第7章 Zygote进程 135
7.1 Zygote进程基础介绍 135
7.2 Zygote进程的启动 139
7.2.1 调用startVM() 函数启动虚拟机 143
7.2.2 调用startReg() 函数注册JNI方法 143
7.2.3 调用ZygoteInit类的main() 方法 145
7.3 启动system_server进程 150
7.4 启动APP应用程序进程 155
第8章 SystemServer进程 161
8.1 SystemServer系统服务 161
8.2 SystemServer创建框架核心服务 165
第9章 Android系统的开机与关机 175
9.1 Android系统的开机 175
9.2 Android系统的关机 185
9.3 案例分析 197
9.3.1 Android系统开机时间标志 197
9.3.2 Android系统关机时间标志 198
第10章 Android系统异常问题 199
10.1 addr2line工具 199
10.2 Android Watchdog 207
10.3 Android系统异常问题 217
10.3.1 Android死机 218
10.3.2 Android系统重启 220
10.3.3 Android系统启动异常 233
第11章 ActivityManagerService 236
11.1 ActivityManagerService简介 236
11.2 Activity的启动过程 240
11.2.1 Launcher Activity的onPause() 过程 241
11.2.2 Launcher Activity的onStop() 过程 261
11.2.3 新Activity的onCreate()、onStart()和onResume() 过程 264
11.3 Service的启动过程 273
11.4 Broadcast 280
11.4.1 广播的注册过程 282
11.4.2 广播的发送过程 290
11.4.3 广播的处理过程 295
11.5 进程内存管理 303
11.6 案例分析 320
11.6.1 与Activity有关的例子 320
11.6.2 与BroadCast有关的例子 323
11.6.3 与进程内存有关的例子 329
第12章 Android国际化 331
12.1 CTS与GTS 331
12.2 全球紧急电话策略 337
12.3 Android多语言 345
第三部分 Android ROM UI篇
第13章 Android资源管理系统 354
13.1 资源管理简介 354
13.2 资源初始化过程 361
13.2.1 AssetManager的构造方法 369
13.2.2 AssetManager.java的addAssetPath() 方法 374
13.2.3 Resources的构造方法 375
13.3 资源查找、解析、创建View过程 378
13.3.1 查找资源ID对应的不是文件的过程 380
13.3.2 查找资源ID对应的是文件的过程 382
13.4 主题换肤实现 396
第14章 Android View系统 411
14.1 View系统简介 411
14.2 应用程序Activity的创建 412
14.3 Activity窗口对象PhoneWindow的创建 424
14.4 Activity根视图对象DecorView的创建 432
14.5 ViewRootImpl的创建和添加DecorView对象 440
14.6 View的measure、layout和draw过程 453
14.6.1 View的measure过程 462
14.6.2 View的layout过程 473
14.6.3 View的draw过程 478
14.7 View事件分发 493
14.8 案例分析 503
第15章 Android控件 512
15.1 Android系统控件分析 512
15.1.1 系统控件简介 512
15.1.2 系统控件TextView的属性 514
15.1.3 系统控件TextView的onMeasure() 517
15.1.4 系统控件TextView的onLayout() 523
15.1.5 系统控件TextView的onDraw() 523
15.2 自定义控件 524
15.2.1 定义自定义控件属性 525
15.2.2 实现自定义控件 525
15.2.3 使用自定义控件 527
15.3 Android控件案例分析 527
前 言
说 明
1.本书涉及C、C 和Java语言,阅读本书好会这三种编程语言,同时本书还会涉及少量Linux,如果懂Linux更佳。
2.本书使用两种格式来对代码进行解释。
种,举例如下。
class Condition {
public:
enum {
PRIVATE = 0,
SHARED = 1
};
//定义两种枚举类型:PRIVATE表示本进程内部使用,SHARED表示用于跨进程共
//享,如果使用Condition时没有指定具体类型,则默认是PRIVATE类型。
……
}
这种方式是在代码段内部解释代码,原因是有些类和方法比较复杂,代码非常长,贴完代码之后,可能已经几页纸了,如果这时候在代码段的后面去解释代码,读者还需要往前翻看需要解释的代码,十分不便。
第二种,举例如下。
public final boolean sendMessage(Message msg)
{
return sendMessageDelayed(msg, 0);
}
代码解释:这里的sendMessage() 方法会调用sendMessageDelayed() 方法,参数msg是具体的Message,而参数0表示这个消息不要延时处理。
由于这种方式的代码量比较少,可以边看代码边看解释,不用翻页,所以采用这种方式比较方便。
3.本书是基于Android源代码和实际开发案例分析的,所以阅读本书一定要结合源代码。
4.大家都知道代码块在Java里叫方法,在C里叫函数,笔者尽量在C、C 中使用“函数”这个叫法,在Java中使用“方法”这个叫法,但也有可能出现混淆。
5.本书使用了Visio、Edraw和StarUML这3个工具来画图,由于排版的问题,图也许会有不清楚的地方,如果发现这类问题,请发邮件至,我会尽快回复。
6.本书是我个人对Android的理解,难免会有错误,恳请大家指正。
1.本书涉及C、C 和Java语言,阅读本书好会这三种编程语言,同时本书还会涉及少量Linux,如果懂Linux更佳。
2.本书使用两种格式来对代码进行解释。
种,举例如下。
class Condition {
public:
enum {
PRIVATE = 0,
SHARED = 1
};
//定义两种枚举类型:PRIVATE表示本进程内部使用,SHARED表示用于跨进程共
//享,如果使用Condition时没有指定具体类型,则默认是PRIVATE类型。
……
}
这种方式是在代码段内部解释代码,原因是有些类和方法比较复杂,代码非常长,贴完代码之后,可能已经几页纸了,如果这时候在代码段的后面去解释代码,读者还需要往前翻看需要解释的代码,十分不便。
第二种,举例如下。
public final boolean sendMessage(Message msg)
{
return sendMessageDelayed(msg, 0);
}
代码解释:这里的sendMessage() 方法会调用sendMessageDelayed() 方法,参数msg是具体的Message,而参数0表示这个消息不要延时处理。
由于这种方式的代码量比较少,可以边看代码边看解释,不用翻页,所以采用这种方式比较方便。
3.本书是基于Android源代码和实际开发案例分析的,所以阅读本书一定要结合源代码。
4.大家都知道代码块在Java里叫方法,在C里叫函数,笔者尽量在C、C 中使用“函数”这个叫法,在Java中使用“方法”这个叫法,但也有可能出现混淆。
5.本书使用了Visio、Edraw和StarUML这3个工具来画图,由于排版的问题,图也许会有不清楚的地方,如果发现这类问题,请发邮件至,我会尽快回复。
6.本书是我个人对Android的理解,难免会有错误,恳请大家指正。
评论
还没有评论。