从图中,我们可以看到从Lanucher启动Activity会至少涉及3个进程,其中ActivityManagerService则是其中的纽带。
ActivityManagerService:Activity管理机制的服务器端,属于一个系统服务。用于管理activity的各种行为,控制activity的生命周期,派发消息事件,低内存管理等等。实现了IBinder接口,可以用于进程间通信。
ActivityStack:为了让这许多 Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出的原则,系统总是显示位于栈顶的Activity。
ActivityStackSupervisor:顾名思义,ActivityStack的管理者,宏观上把一群sleep、visible、stop的Activity汇集起来。也负责Activity生命周期的一些方法调度。
ApplicationThread:是一个Binder对象,里面有各种于AMS通信的接口,主要负责与AMS的通信。
ActivityThread:里面有进程主线程的入口,类似于main的功能,也建立main looper。同时负责与AMS的四大组建、生命周期的各种调度。
Instrumentation:可以理解为一个包装好的统一管理类,里面有callActivityOnCreate、callApplicationOnCreate、newActivity、callActivityOnNewIntent 等基本上在application和activity的所有生命周期调用中的方法。
ActivityRecord:Activity的一些信息,比如说宿主进程、component信息等。
ProcessRecord:有进程的一些信息,可能会包含这很多ActivityRecord(还有Service等其他组件)。
TaskRecord:task信息,不过有一点注意的是taskRecord对应的ActivityRecord会处于连续的位置。