一、流程图
启动Service的流程(bindService和StartService)如下:

二、bindService
2.1 ContextImpl#bindService -> ContextImpl#bindServiceCommon

1、 ServiceConnection无法跨进程通信,因此将它放在InnerConnection类中,InnerConnection类是的子类,可以跨进程通信。



2、 ActivityManagerService为IActivityManager.Stub的子类,将InnerConnection对象作为参数,跨进程调用ActivityManagerService的
bindService方法。
2.2 ActivityManagerService#bindService -> ActiveServices#bindServiceLocked -> bringUpServiceLocked -> realStartServiceLocked

网友评论