总结--Android四大组件的工作过程(写了一个)

首先几个类说明:

TaskRecord:启动的Activity所在的栈

ProcessRecord:描述一个应用程序进程

ActivityRecord:描述一个Activity,记录一个Activity的所有信息

ServiceRecord:描述一个Service,记录一个Service的所有信息

LoadedAPK:描述已加载的APK文件,可以获取到packageInfo,等信息(清单文件)

1、根Activity的启动过程:

在应用程序进程没有创建的情况下,根Activity启动过程中会涉及到4个进程,分别是Zygote进程、Launcher进程、AMS所在进程(SyetemServer进程)、应用程序进程。它们之间的关系如下图所示

非根Activity启动只涉及到AMS所在进程(SyetemServer进程)、应用程序进程两个进程。

首先Launcher进程向AMS请求创建Activity(点击桌面图标),AMS会判断根Activity所需的应用程序进程是否存在并启动,如果不存在就会请求Zygote进程创建应用程序进程。应用程序进程启动后(先执行Applicition的onCreate方法),AMS会请求创建应用程序进程并启动Activity。

其中步骤2是通过Socket通信,步骤1/4是通过AIDL通信。

总结--Android四大组件的工作过程(写了一个)_第1张图片

 

特别说明:

ContentProvider :当应用程序没启动时,有第三方应用通过ContentProvider访问共享数据的时候,新的应用程序进程启动的时候会先调用ContentProvider的onCreate方法后调用Application的onCreate方法,别的三个控件都是先调用Application的onCreate方法,后调用自己的onCreate方法。

 

你可能感兴趣的:(总结)