新書推薦:
《
不被他人左右:基于阿德勒心理学的无压力工作法
》
售價:HK$
66.1
《
SDGSAT-1卫星热红外影像图集
》
售價:HK$
445.8
《
股市趋势技术分析(原书第11版)
》
售價:HK$
221.8
《
汉匈战争全史
》
售價:HK$
99.7
《
恶的哲学研究(社会思想丛书)
》
售價:HK$
109.8
《
不止江湖
》
售價:HK$
98.6
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:HK$
154.6
《
双城史
》
售價:HK$
110.9
|
編輯推薦: |
基于Android源代码和实际开发案例分析,让读者在学习过程中进一步吃透源代码。
|
內容簡介: |
本书基于Android 6.0源代码和实际案例,分析Android系统的框架原理和具体实现。由于Android框架里模块众多,本书只详细分析了框架里的一部分模块,涉及这些模块的原理、架构及代码实现等各个细节,尽量做到让读者知其然,又知其所以然。在Android官方网站,Android分了4层,从高到低分别是应用程序层、应用程序框架层、系统库层和Linux内核层。本书主要涉及应用程序层、应用程序框架层和系统库层。
|
關於作者: |
何军,2010年从事Android工作至今,从Android1.6到现在的Android7.0,热爱Android、喜欢钻研、乐于分享。多年的框架开发和应用开发经验,应用商店有多个APP上线作品。热衷于Android源代码的研究,对Android的架构设计和实现原理有深刻的认识和理解。目前就职于某一手机厂商,任职Android Framework框架工程师,负责Framework与APP开发和维护。
|
目錄:
|
第一部分Android基础篇
第1章 Android简介2
1.1Android简介2
1.2阅读Android源代码6
第2章 Android基础类10
2.1Android基础类简介10
2.2Thread类原理11
2.3Mutex与Condition20
2.3.1Mutex(AutoMutex)分析20
2.3.2Condition代码分析24
2.4Android系统智能指针30
2.4.1轻量级指针(lp)30
2.4.2强指针(sp)32
第3章 Android上下文环境Context37
3.1Context简介37
3.2Application运行上下文环境Context的创建过程40
3.2.1创建Application Context41
3.2.2获得Application Context47
3.3Activity运行上下文环境Context的创建过程48
3.4Service运行上下文环境Context的创建过程55
第4章 Android消息机制59
4.1Android消息机制原理59
4.2创建消息队列和进入消息循环过程61
4.3消息的发送过程70
4.4消息的处理过程75
第二部分Android框架篇
第5章 Android Init进程78
5.1Android Init进程简介78
5.2klog_init 函数83
5.3process_kernel_cmdline 函数85
5.4signal_handler_init 函数86
5.5property_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.1init.rc文件基础介绍96
5.7.2解析init.rc文件100
5.7.3启动service进程104
第6章 开机动画bootanimation108
6.1开机动画bootanimation原理108
6.2开机动画bootanimation的显示过程111
6.3开机动画bootanimation的退出过程127
第7章 Zygote进程135
7.1Zygote进程基础介绍135
7.2Zygote进程的启动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.1SystemServer系统服务161
8.2SystemServer创建框架核心服务165
第9章 Android系统的开机与关机175
9.1Android系统的开机175
9.2Android系统的关机185
9.3案例分析197
9.3.1Android系统开机时间标志197
9.3.2Android系统关机时间标志198
第10章 Android系统异常问题199
10.1addr2line工具199
10.2Android Watchdog207
10.3Android系统异常问题217
10.3.1Android死机218
10.3.2Android系统重启220
10.3.3Android系统启动异常233
第11章 ActivityManagerService236
11.1ActivityManagerService简介236
11.2Activity的启动过程240
11.2.1Launcher Activity的onPause 过程241
11.2.2Launcher Activity的onStop 过程261
11.2.3新Activity的onCreate、onStart和onResume 过程264
11.3Service的启动过程273
11.4Broadcast280
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.1CTS与GTS331
12.2全球紧急电话策略337
12.3Android多语言345
第三部分Android ROM UI篇
第13章 Android资源管理系统354
13.1资源管理简介354
13.2资源初始化过程361
13.2.1AssetManager的构造方法369
13.2.2AssetManager.java的addAssetPath 方法374
13.2.3Resources的构造方法375
13.3资源查找、解析、创建View过程378
13.3.1查找资源ID对应的不是文件的过程380
13.3.2查找资源ID对应的是文件的过程382
13.4主题换肤实现396
第14章 Android View系统411
14.1View系统简介411
14.2应用程序Activity的创建412
14.3Activity窗口对象PhoneWindow的创建424
14.4Activity根视图对象DecorView的创建432
14.5ViewRootImpl的创建和添加DecorView对象440
14.6View的measure、layout和draw过程453
14.6.1View的measure过程462
14.6.2View的layout过程473
14.6.3View的draw过程478
14.7View事件分发493
14.8案例分析503
第15章 Android控件512
15.1Android系统控件分析512
15.1.1系统控件简介512
15.1.2系统控件TextView的属性514
15.1.3系统控件TextView的onMeasure517
15.1.4系统控件TextView的onLayout523
15.1.5系统控件TextView的onDraw523
15.2自定义控件524
15.2.1定义自定义控件属性525
15.2.2实现自定义控件525
15.2.3使用自定义控件527
15.3Android控件案例分析527
|
內容試閱:
|
说 明
1.本书涉及C、C和Java语言,阅读本书最好会这三种编程语言,同时本书还会涉及少量Linux,如果懂Linux更佳。
2.本书使用两种格式来对代码进行解释。
第一种,举例如下。
class Condition {
public:
enum {
PRIVATE = 0,
SHARED = 1
};
定义两种枚举类型:PRIVATE表示本进程内部使用,SHARED表示用于跨进程共
享,如果使用Condition时没有指定具体类型,则默认是PRIVATE类型。
}
这种方式是在代码段内部解释代码,原因是有些类和方法比较复杂,代码非常长,贴完代码之后,可能已经几页纸了,如果这时候在代码段的最后面去解释代码,读者还需要往前翻看需要解释的代码,十分不便。
第二种,举例如下。
public final boolean sendMessageMessage msg
{
return sendMessageDelayedmsg, 0;
}
代码解释:这里的sendMessage 方法会调用sendMessageDelayed 方法,参数msg是具体的Message,而参数0表示这个消息不要延时处理。
由于这种方式的代码量比较少,可以边看代码边看解释,不用翻页,所以采用这种方式比较方便。
3.本书是基于Android源代码和实际开发案例分析的,所以阅读本书一定要结合源代码。
4.大家都知道代码块在Java里叫方法,在C里叫函数,笔者尽量在C、C中使用函数这个叫法,在Java中使用方法这个叫法,但也有可能出现混淆。
5.本书使用了Visio、Edraw和StarUML这3个工具来画图,由于排版的问题,图也许会有不清楚的地方,如果发现这类问题,请发邮件至813126419@qq.com,我会尽快回复。
6.本书是我个人对Android的理解,难免会有错误,恳请大家指正。
|
|