Application 启动流程主要分为以下几步:
- 点击启动一个App,Launcher进程采用 Binder IPC 向 ActivityManagerService 发起start Activity请求;
- 2.ActivityManagerService 接收到请求后,向 Zygote 进程发送创建进程的请求;Zygote 进程 fork 出新的子进程, 即App进程;
- App 进程通过 Binder IPC 向 system_server 进程发起绑定 Application 请求;
- system_server 进程在收到请求后,进行一系列准备工作后,再通过 Binder IPC 向 App 进程发送 scheduleLaunchActivity请求;
- App 进程的Binder 线程(ApplicationThread)在收到请求后,通过 handler 向主线程发送 Launch_ACTIVITY 消息;
- 主线程在收到 Message 后,通过发射机制创建目标 Activity,并回调 Activity.onCreate() 等方法;
到此,App 正式启动,开始进入Activity 生命周期,执行完 onCreate/onStart/onResume 方法,绘制完成UI渲染结束后便可以看到App的主界面了。