推荐序
前 言
第1章 开发环境部署1
1.1获取Android源代码1
1.2Android的编译3
1.3在IDE中导入Android源代码4
1.3.1将Android源代码导入Eclipse4
1.3.2将Android源代码导入SourceInsight5
1.4调试Android源代码6
1.4.1使用Eclipse调试Android Java源代码6
1.4.2使用gdb调试Android C/C++源代码8
1.5本章小结9
第2章深入理解Java Binder和MessageQueue10
2.1概述11
2.2Java层中的Binder分析11
2.2.1Binder架构总览11
2.2.2初始化Java层Binder框架13
2.2.3窥一斑,可见全豹乎16
2.2.4理解AIDL25
2.2.5Java层Binder架构总结28
2.3心系两界的MessageQueue28
2.3.1MessageQueue的创建29
2.3.2提取消息29
2.3.3nativePollOnce函数分析32
2.3.4MessageQueue总结42
2.4本章小结44
第3章 深入理解AudioService45
3.1概述46
3.2音量管理47
3.2.1音量键的处理流程47
3.2.2通用的音量设置函数setStreamVolume()61
3.2.3静音控制63
3.2.4音量控制小结67
3.3音频外设的管理68
3.3.1 WiredAccessoryObserver 设备状态的监控68
3.3.2AudioService的外设状态管理73
3.3.3音频外设管理小结78
3.4AudioFocus机制的实现78
3.4.1AudioFocus最简单的例子79
3.4.2AudioFocus实现原理简介81
3.4.3申请AudioFocus82
3.4.4释放AudioFocus86
3.4.5AudioFocus小结87
3.5AudioService的其他功能88
3.6本章小结89
第4章 深入理解WindowManager-Service90
4.1初识WindowManagerService91
4.1.1一个从命令行启动的动画窗口91
4.1.2WMS的构成99
4.1.3初识WMS的小结103
4.2WMS的窗口管理结构104
4.2.1理解WindowToken107
4.2.2理解WindowState111
4.2.3理解DisplayContent112
4.3理解窗口的显示次序112
4.3.1主序、子序和窗口类型112
4.3.2通过主序与子序确定窗口的次序114
4.3.3更新显示次序到Surface119
4.3.4关于显示次序的小结119
4.4窗口的布局119
4.4.1从relayoutWindow()开始120
4.4.2布局操作的外围代码分析124
4.4.3初探performLayoutAndPlace-SurfacesLockedInner()127
4.4.4布局的前期处理128
4.4.5布局DisplayContent130
4.4.6布局的最终阶段150
4.5WMS的动画系统150
4.5.1Android动画原理简介151
4.5.2WMS的动画系统框架155
4.5.3WindowAnimator分析156
4.5.4深入理解窗口动画160
4.5.5交替运行的布局系统与动画系统173
4.5.6动画系统总结174
4.6本章小结174
第5章 深入理解Android输入系统176
5.1初识Android输入系统177
5.1.1getevent与sendevent工具178
5.1.2Android输入系统简介179
5.1.3IMS的构成181
5.2原始事件的读取与加工185
5.2.1基础知识:INotify与Epoll186
5.2.2 InputReader的总体流程189
5.2.3 深入理解EventHub191
5.2.4 深入理解InputReader205
5.2.5原始事件的读取与加工总结225
5.3输入事件的派发225
5.3.1通用事件派发流程226
5.3.2按键事件的派发237
5.3.3DispatcherPolicy与InputFilter247
5.3.4输入事件的派发总结250
5.4输入事件的发送、接收与反馈250
5.4.1深入理解InputChannel251
5.4.2连接InputDispatcher和窗口252
5.4.3事件的发送260
5.4.4事件的接收263
5.4.5事件的反馈与发送循环264
5.4.6输入事件的发送、接收与反馈总结267
5.5关于输入系统的其他重要话题267
5.5.1输入事件ANR的产生267
5.5.2 焦点窗口的确定270
5.5.3以软件方式模拟用户操作273
5.6本章小结273
第6章 深入理解控件系统275
6.1 初识Android的控件系统276
6.1.1 另一种创建窗口的方法277
6.1.2 控件系统的组成278
6.2 深入理解WindowManager279
6.2.1 WindowManager的创建与体系结构279
6.2.2 通过WindowManagerGlobal添加窗口282
6.2.3 更新窗口的布局284
6.2.4 删除窗口285
6.2.5 WindowManager的总结285
6.3 深入理解ViewRootImpl286
6.3.1 ViewRootImpl的创建及其重要的成员286
6.3.2 控件系统的心跳:performTraversals()290
6.3.3 ViewRootImpl总结317
6.4 深入理解控件树的绘制317
6.4.1 理解Canvas317
6.4.2 View.invalidate()与脏区域320
6.4.3 开始绘制321
6.4.4 软件绘制的原理323
6.4.5 硬件加速绘制的原理334
6.4.6 使用绘图缓存346
6.4.7 控件动画356
6.4.8 绘制控件树的总结360
6.5 深入理解输入事件的派发361
6.5.1 触摸模式361
6.5.2 控件焦点363
6.5.3 输入事件派发的综述376
6.5.4 按键事件的派发381
6.5.5 触摸事件的派发388
6.5.6 输入事件派发的总结404
6.6 Activity与控件系统405
6.6.1 理解PhoneWindow405
6.6.2 Activity窗口的创建与显示414
6.7 本章小结416
第7章 深入理解SystemUI418
7.1 初识SystemUI419
7.1.1 SystemUIService的启动420
7.1.2 状态栏与导航栏的创建422
7.1.3 理解IStatusBarService425
7.1.4 SystemUI的体系结构427
7.2 深入理解状态栏428
7.2.1 状态栏窗口的创建与控件树结构429
7.2.2 通知信息的管理与显示434
7.2.3 系统状态图标区的管理与显示448
7.2.4 状态栏总结452
7.3 深入理解导航栏452
7.3.1 导航栏的创建453
7.3.2 虚拟按键的工作原理459
7.3.3 SearchPanel462
7.3.4 关于导航栏的其他话题465
7.3.5 导航栏总结471
7.4 禁用状态栏与导航栏的功能472
7.4.1 如何禁用状态栏与导航栏的功能472
7.4.2 StatusBarManagerService对禁用标记的维护473
7.4.3 状态栏与导航栏对禁用标记的响应474
7.5 理解SystemUIVisibility475
7.5.1 SystemUIVisibility在系统中的漫游过程476
7.5.2 SystemUIVisibility发挥作用482
7.5.3 SystemUIVisibility总结494
7.6 本章小结495
第8章 深入理解Android壁纸496
8.1 初识Android壁纸497
8.2深入理解动态壁纸498
8.2.1启动动态壁纸的方法498
8.2.2壁纸服务的启动原理498
8.2.3 理解UpdateSurface()方法510
8.2.4 壁纸的销毁515
8.2.5 理解Engine的回调516
8.3 深入理解静态壁纸—ImageWallpaper519
8.3.1 获取用作静态壁纸的位图519
8.3.2 静态壁纸位图的设置522
8.3.3 连接静态壁纸的设置与获取—WallpaperObserver524
8.4 WMS对壁纸窗口的特殊处理526
8.4.1 壁纸窗口Z序的确定527
8.4.2 壁纸窗口的可见性533
8.4.3 壁纸窗口的动画535
8.4.4 壁纸窗口总结538
8.5 本章小结539
· · · · · · (
收起)