0%

Android系统启动-Launcher进程启动

前言

本文是介绍Android系统启动——Launcher进程。(基于Android 10.0的源码)

目录

SystemServer.startOtherServices
ActivityManagerService. systemReady
ActivityTaskManagerInternal.startHomeOnAllDisplays
RootActivityContainer.startHomeOnAllDisplays
RootActivityContainer.startHomeOnDisplay
RootActivityContainer.startHomeOnDisplay重载
ActivityStartController.startHomeActivity
ActivityStarter.startActivity

对于普通的app进程,跟system_server进程的启动过来有些类似.不同的是app进程是向发消息给system_server进程, 由system_server向zygote发出创建进程的请求。

  1. App发起进程:当从桌面启动应用,则发起进程便是Launcher所在进程;当从某App内启动远程进程,则发送进程便是该App所在进程。发起进程先通过binder发送消息给system_server进程;
  2. system_server进程:调用Process.start()方法,通过socket向zygote进程发送创建新进程的请求;
  3. zygote进程:在执行ZygoteInit.main()后便进入runSelectLoop()循环体内,当有客户端连接时便会执行ZygoteConnection.runOnce()方法,再经过层层调用后fork出新的应用进程;
  4. 新进程:执行handleChildProc方法,最后调用ActivityThread.main()方法。

总结

引用文章:

Android系统启动流程之Launcher进程启动

理解Android进程创建流程