app启动分为三大部分:
- launcher至zygote进程接收到启动app消息
- zygote进程创建子进程,子进程调用ActivityThread的main函数
- app进程从main开始至启动完成
launcher至zygote进程接收到启动app消息
launcher启动app和启动一个activity调用接口一样:startActivity,在执行过程中,AMS根据activity栈状态,决定是否通过zygote进程创建一个新的app进程
zygote创建子进程和调用app main
zygote进程启动创建了zygote socket,zygote进程监听socket状态,根据介绍的消息,创建子进程,初始化子进程以及子进程调用ActivityThread的main函数
调用app main函数之后
调用app main函数(也即ActivityThread的main函数)后,会执行三个attach
- ActivityThread attach : app和系统绑定
- Application attach: app和上下文(context)绑定
- activity attach: activity和window绑定