目标:
1.
一、AMS启动流程
ActivityManagerService是
安卓10 以后,将AMS拆分出ActivityTaskManagerService。
1.1 启动入口
AMS是由SystemServer进程启动,在启动过程
startBootStripService,会启动AMS和ATMS服务。
SystemServiceManager:专门提供给SystemServer进程管理90多个服务的。
系统服务继承SystemService父类,系统服务都继承这个类,可以由SystemServiceManager统一管理这些服务。
1.2 AMS主要作用
AMS(包括ATMS)主要是提供给应用(Application)使用
二、AMS类结构设计
ActivityManagerService继承IActivityManager.Stub
创建一个静态内部类 ActivityManagerService.Lifecycle继承SystemService
publishService: 将AMS服务注册到ServiceManager,ServiceManager统一管理系统服务的访问Binder对象。
三、AMS职责
AMS职责
- 管理四大组件
四、Activity启动流程
4.1 APP启动流程图
1)点击桌面应用,调用startActivity, 拿到AMS的binder,然后调用AMS.startActivity
2)启动进程时,判断目标Activity所在的进程是否存在。进程不存在,则发送消息给zygote进程,
3)zygote fork出一个新的子进程。
4)进程创建以后,attach到AMS,将子进程注册到AMS
5)AMS发送scheduleLauncherActivity执行Activity生命周期