本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
SystemServer启动
- 创建SystemContex 用于加载系统相关的资源,比如theme,android命名空间下的资源等
- 创建引导服务,安装器Installer服务, AMS就属于引导服务,还有电源管理服务PMS
- 启动核心服务和其他服务,总共得有80多个以上
- AMS启动也分为几个阶段,类似生命周期
AMS启动和初始化
- SystemServer通过startService创建Lifecycle对象,
- Lifecycle里构造方法里通过new创建AMS
- AMS 会创建“android.ui”线程、创建ActiveServices管理activity、创建ActivityStackSupervisor对象管理activity栈
- AMS会创建前台广播和后台广播队列、provider的Map等
- 电量统计服务、进程相关服务
- VrConroller虚拟现实相关
- mActivityConroller
- RecentTask,最近的任务列表
- ClientLifeCycleManager API28之前是没有,用来控制activity的生命周期
- watchDog守护进程(继承自Thread是一个线程)
- 移除所有的应用进程(AMS刚刚启动),启动电池服务
12.setSystemProcess
mActivityManagerService.setSystemProcess 设置SystemServer,添加了各种服务:
- permission权限服务、内存服务meminfo、进程统计服务procstats、进程服务processinfo、数据库服务等
- oomAdj服务,跟杀进程有关
13.安装系统相关的Provider
- 安装Provider
- 系统设置相关的监听,字体相关的监听,开发者选项相关监听
- 调用WMS的main方法创建和初始化WMS,然后AMS设置WMS,将AMS与WMS关联起来
- 和网络相关的服务关联起来
16. AMS调用SystemReady,服务基本启动完成,准备启动系统UI
- startSystemUi启动系统UI
- 执行一些列服务的SystemReady方法
- startHomeActivityLocked方法,启动Launcher
进程对比
- init进程:没有framework的资源,主要任务是解析init.rc文件,创建各种服务进程
- zygote进程:会加载一个进程所需要的必要资源,比如preloadClass、VM虚拟机;APP的进程从这里fork出
- system_server进程:从zygote进程fork出来,创建大量服务,比如AMS等,加载androidFramework所需要的资源,创建context;也有可能会创建其他的进程,有些服务可能是处于单独的进程
参考书
这里介绍几本系统层面的参考书,都是比较有名的
1、柯元旦教授的《Android内核剖析》
《Android内核剖析》是柯元旦教授编著的一本深入解析Android操作系统内核的专著。柯元旦教授是中国计算机领域的知名专家,他在操作系统和内核层面有着丰富的研究和实践经验。这本书针对Android系统,从底层内核到高层应用,提供了全面而深入的解析。
2、罗升阳 的《Android系统源代码情景分析》
《Android系统源代码情景分析》是罗升阳编著的一本详尽解析Android系统源代码的书籍。罗升阳是一位深耕Android系统的专家,他在操作系统和Android平台方面有深厚的技术积累和丰富的从业经验。这本书通过剖析实际的源代码,帮助读者理解Android系统的框架和实现机制。
欢迎关注我的公众号AntDream查看更多精彩文章!