Activity 启动流程

下面的流程是 API 27,不同的版本之间差异不大,但在细节上有区别。
点击桌面应用图标或自己程序启动Activity过程,由于过程比较长,所以分段来介绍。

从 Activity#startActivity 到切换到 ActivityThread 的过程

这部分比较繁琐切没太大意思,不同的版本走的过程有些差异。

Activity 启动流程_第1张图片
activity01.png

ActivityThread 到调起 onCreate 过程

下面的代码你可以注意到下面几点

  1. ApplicationThread 实现了 IApplicationThread.Stub
  2. ActivityThread 是程序的入口,可以看到 main 方法,在 main 中关联 Looper,
  3. Activity 是通过反射创建的,Instrumentation 这类关系到 Activity 的生命周期,可以通过 hook Instrumentation 实现插件化。
Activity 启动流程_第2张图片
activity02.png

具体的代码就不帖了,自己画一张流程图比简单的贴代码更直观。

你可能感兴趣的:(Activity 启动流程)