Android程序的启动首先最先启动的是Launcher程序(即可以理解为系统桌面),然后在由Launcher去通知和启动某个APP,而每个APP启动又是从Activity开始的。这一系列的过程都是在Launcher、Instrumentation、ActivityManagerProxy、ActivityManagerService、ActivityStack、ApplicationThreadProxy、ApplicationThread、ActivityThread、Handler等类中进行的,简单总结为五大步,如下:
一:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity.
二:ActivityManagerService通过Binder通知Launcher进入Paused状态
三:Laucher通过Binder通知ActivityManagerService创建一个新的进程,来启动ActivityThread实例(就是为了让Activity运行在此ActivityThread中)
四:ActivityThread通过Binder将ApplicationThread类型的Binder传递给ActivityThreadService方便后续通信
五:ActivityManagerService通过ActivityThread启动Activity
参考博客:https://blog.csdn.net/luoshengyang/article/details/6689748