上一篇 ams启动流程
概述
- Launcher点击应用图标:
- binder进入ATMS,为应用第一个act创建ActivityRecord,找到其ActivityStack,将ActivityRecord插入到所在TaskRecord的合位置,最后执行ActivityManagerInternal::startProcess
- 进入AMS,请求创建应用进程:这个过程创建了ProcessRecord对象,并处理保存了进程所需各种信息,最后通过Process.start()请求创建应用进程
- Zygote创建应用进程,通过socket与zygote进程通信,fork出应用进程
- 应用进程主线程-执行ActivityThread的main():在应用主线程中,执行ActivityThread的main
- 进入系统进程,绑定应用进程,创建应用Application,将应用进程绑定到ATMS中,由他们管理
- 回到应用进程,创建应用第一个Activity,执行了attach() 和onCreate()
注:AMS和ATMS服务都是在系统进程-system server进程中。
所以,整个过程 进程变化是:Launcher进程(binder)->systemserver进程(socket)->zygote进程(socket)->应用进程(binder)->systemserver进程(binder)->应用进程