AMS系列- 应用启动流程

上一篇 ams启动流程

概述

  1. Launcher点击应用图标:
  2. binder进入ATMS,为应用第一个act创建ActivityRecord,找到其ActivityStack,将ActivityRecord插入到所在TaskRecord的合位置,最后执行ActivityManagerInternal::startProcess
  3. 进入AMS,请求创建应用进程:这个过程创建了ProcessRecord对象,并处理保存了进程所需各种信息,最后通过Process.start()请求创建应用进程
  4. Zygote创建应用进程,通过socket与zygote进程通信,fork出应用进程
  5. 应用进程主线程-执行ActivityThread的main():在应用主线程中,执行ActivityThread的main
  6. 进入系统进程,绑定应用进程,创建应用Application,将应用进程绑定到ATMS中,由他们管理
  7. 回到应用进程,创建应用第一个Activity,执行了attach() 和onCreate()

注:AMS和ATMS服务都是在系统进程-system server进程中。
所以,整个过程 进程变化是:Launcher进程(binder)->systemserver进程(socket)->zygote进程(socket)->应用进程(binder)->systemserver进程(binder)->应用进程

上一篇:已获千赞,卑微打工人


下一篇:Android开发者必须收藏的8个开源库,面试学习