SystemUI 启动流程及主体布局介绍
一. SystemUI 主体框架启动流程
Zygote 中启动 SystemServer 组件,我们就从 SystemServer 开始分析。
SystemServer 是系统服务进程,负责启动 Android 系统的关键服务。
其入口是 SystemServer.main():
/**
*The main entry point from zygote.
*/
Public static void main(String[] args){
New SystemServer.run();
}
可以看到 main()中生成了 SystemServer 对象并执行了 run 方法。
SystemServer.run();
Private void run(){
……
// Start services.
try {
t.traceBegin("StartServices");
startBootstrapServices(t);
startCoreServices(t);
startOtherServices(t);
} catch (Throwable ex) {
Slog.e("System", "******************************************");
Slog.e("System", "************ Failure starting system services", ex);
throw ex;
} finally {
t.traceEnd(); // StartServices
}}
……
startBootstrapService()中启动 mActivityManagerService。
之后,看下 startOtherServices();
private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
mActivityManagerService.systemReady(() -> {
……
try {
startSystemUi(context, windowManagerF);
} catch (Throwable e) {
reportWtf("starting System UI", e);
}
……