1. Activity的启动过程

performLaunchActivity方法解析:
- 从
ActivityClientRecord中获取带启动的Activity的组件信息 - 通过
Instrumentation的newActivity方法使用类加载器创建Activity对象 - 通过
LoadApk的makeApplication方法来尝试创建Application对象 - 创建
ContextImpl对象并通过Activity的attach方法来完成一些重要数据的初始化 - 调用
Activity的onCreate方法
2. Service的启动过程
2.1 Service启动过程

Service启动过程
handleCreateService
- 通过类加载创建
Service实例 - 创建
Application对象并调用onCreate方法 - 创建
ContextImpl对象,并通过Service的attach方法建立二者的联系 - 调用
Service的onCreate方法,并将Service对象储存在ApplicationThread的一个列表
2.2 Service绑定过程

Service绑定过程
-
ServiceConnection和InnerServiceConnection由serviceDispatcher连接,ServiceConnection和serviceDispatcher由一个ArrayMap连接,ServiceConnection内部又保存了ServiceConnection和InnerServiceConnection -
ServiceConnection的回调由AMS#publishService完成,它的流程如下

3. BroadcastReceiver
3.1 广播的注册过程
3.1.1 静态注册
由PMS来完成整个注册过程
3.1.2 动态注册

-
AMS最终会存储InnerReceiver对象和IntentFilter
3.2 广播的发送和接收过程

4. ContentProvider

- 懒加载的机制,第一次使用的时候会创建
ContentProvider并把它放入内存中,下次直接返回
handleBindApplication
- 创建
ContextImpl和Instrumentation - 创建
Application对象 - 创建当前进程的
ContentProvider并调用其onCreate方法 - 调用
Application的onCreate方法
