四大组件是应用开发最长接触的,包括Activity、Service、BroadcastReceiver、ContentProvider。本文不会介绍四大组件的含义及如何使用,而是深入的介绍他们的工作过程。
本文是基于Android 8.0 源码,所以部分函数,以及一些中间类可能在低版本的源码中没有。
1. 根Activity的启动过程
Activity的启动有两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程。根Activity值得是应用程序的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。除去根Activity外,其他的为普通Activity。
根Activity的启动比较复杂,这里分3部分来讲述,分别是Launcher请求AMS过程,AMS到ApplicationThread的调用过程和ActivityThread启动Activity。
1.1 Launcher请求AMS过程
Android系统启动流程中提到过Launcher启动后,会将已安装应用程序的快捷图标显示到桌面上,这希尔应用程序的快捷图标就是启动根Activity的入口,当我们点击摸个应用程序的快捷图标是,就会通过Launcher请求AMS来启动该应用程序。Launcher请求AMS的时序图如下: