总体架构
由图可以知道
ActivityManagerService的体系实现也是一个Binder机制的实现。因为ActivityManagerService与应用程序运行在不同的进程,
所以需要跨进程通信。ActivityManagerService的作用是管理四大组件的创建,销毁以及生命周期的管理。管理,记录,查询。
启动service的流程
ContextWrapper与ContextImpl是典型的装饰者设计模式。 经过一系列方法调用,
最终在ActivityManagerService的方法realStartServiceLocked中调用了Service所在进程的scheduleCreateService方法。
也标志着ActivityManagerService所在进程做的事情已经做完了,事情做完指的是各种校验及记录功能完成。
将交由Service所在进程创建Service对象等等操作。最后通过反射创建对象的代码在ActivityThread的handleCreateService方法。并在此方法中执行Service的onCreate方法。Service启动完成了。
activity启动的流程
流程跟Service是差不多的, 都是先由app所在进程调用ActivityManagerService的方法, ActivityManagerService经过校验和记录之后, 调用app所在进程的方法,创建Activity对象,回调onCreate方法。