典型状态下的生命周期分析
异常状况下的生命周期分析
Activity的启动过程:
zygote 分裂出嫡长子 system_server后,就通过runSelectLoopMode 等待并处理来自客户的消息了,那么,谁会向zygote 发送消息呢?这里以一个 Activity 的启动为例,具体分析zygote 是如何分裂和繁殖的。
ActivityManagerService 也是由 SystemServer 创建的。 假设通过 startActivity 来启动一个新的 Activity,而这个 Activity 附属于一个还未启动的进程,那么这个进程该如何启动呢?继续上图,结合上一张图
总结:总结起来就是 init 进程创建了 zygote 进程,zygote进程 进行了一些初始化之后便创建了 SystemServer 进程,之后便 zygote进程调用了 runSelectLoopMode() 函数等待请求,SystemServer 进程创建了 Android 系统的服务,其中ActivityManagerService(简称AMS)是 Android 中最核心的服务,主要负责系统中四大组件的启动、 切换、 调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块类似。Activity 的启动便是由 AMS 向 zygote进程发起消息(这个说法并不精确由于 AMS 运行在 SystemServer 进程中,所以其本质还是由SystemServer 进程向 zygote 进程发起消息)。如上图