Nixo Home

Activity启动流程

字数统计: 214阅读时长: 1 min
2019/07/20 Share

首先Activity启动需要使用到6个点,分别是

  • AMS
  • ActivityStackSupervisor
  • ActivityStack
  • ActivityManagerServce
  • PackageManagerService
  • ActivityThread

首先laucher点击后,调用startActivitySatefly 之后会调用Activity的startActivity 因为laucher也是一个Activity,之后startActivity内部其实是调用了startActivityForResult request是-1也就是没有回调,所以平时开发的时候,使用startActivityForResult的时候需要注意不要写-1,否则是接收不到回调的,startActivityForResult内部调用的是Intrumentation的startActivity,然后调用的是ActivityMangerProxy的startActivity然后调用AMS的startActivity,之后会用到ActivityStackSupervisor的startActivityMyWait来检查该应用进程是否存在,如果不存在则会创建进程,然后通过PackageMangerServce来获取进程信息通过zegote来fork出来,然后通过AMS来启动进程,进程开启后通过ActivityThread的mian函数来进行初始化然后调用attch方法,然后调用ActivityManager的attachApplication方法,最后通过scheduleLaunchActivity()启动。

CATALOG