1. ServiceManager
通过解析init.rc来启动ServiceManager
1)作为进程间通信binder机制中的重要角色,运行在native层,负责注册与提供服务
2)维护一个死循环,不断的查看是否有service的操作请求,如果有就读取相应的内核binder driver
3)维护一个缓存的Map
4)context.getSystemService方法获取的manager都是通过ServiceManager来获取bindr对象
2. SystemServer
SystemServer是Zygote调用forkSystemServer启动的第一个进程,system_server进程承载着整个framework的核心服务,例如: ActivityManagerService,PowerManagerService,DisplayManagerService,PackageManagerService,WindowManagerService,LauncherAppsService等80多个核心系统服务。这些服务以不同的线程方式存在于system_server
3. SystemService
SystemServer进程会创建并启动一系列SystemService的子类实例,这些子类实现了各种具体的服务功能,共同构建了Android系统的基础设施
构造方法:创建SystemService实例时初始化必要的成员变量和资源
生命周期管理:定义了系统服务的启动、停止、绑定和解除绑定等基本生命周期方法,如onStartCommand()、onBind()、onUnbind()等
服务注册与注销:系统服务在启动时需要注册到SystemServiceManager中,以便系统可以跟踪和管理所有运行的服务
服务间通信:SystemService通常会与其他系统服务进行交互,例如通过Binder机制与其他服务进行通信
资源和权限管理:SystemService可能还需要管理与服务相关的系统资源,并进行必要的权限检查
系统事件响应:SystemService类的子类可能需要响应系统发生的各种事件,例如系统启动、设备状态变化、用户交互等
4. SystemServiceManager
SystemServiceManager 类用于创建和启动各种系统服务,并且这些系统服务必须是 com.android.server.SystemService 的子类。除此之外,它还支持系统服务启动状态的通知及处理。用户使用方法 startBootPhase 来发送并告知通过 SystemService 启动的服务当前系统的启动阶段