Activity启动流程(面试用)

152 阅读1分钟
  • Activity startActivity 调用 startActivityForResult, 再调用Instrument execStartActivity, 再通过binder 对象 ActivityManagerProxy 调用ActivityManagerService, 在AMS中有ActivityStack 管理Activity 栈,通过权限检查后,通过ApplicationThread binder 通知activity1 onpause.
  • AMS 中判断进程是否开启,通过Zygote fork 新的进程。
  • AMS 通过 ApplicationThread 通知 新进程启动Application ,并bind 到新时程上。
  • AMS 再 通过 binder 通知 ApplicationThreadProxy , 调用H 对象发送消息给 ActivityThread, activity2 launch.

binder 线程池 是在进程创建时一同创建的,有数量限制。