Android知识点20--SystemServer/SystemService/SystemServiceManager/ServiceManager

192 阅读2分钟

1. SystemServer是一个final的类是由Zynote进程fork出来的第一个进程。

SystemServer是Android系统的核心服务进程,负责启动和管理系统中的各种系统服务。在Android系统启动时,SystemServer会被最先启动,然后负责启动和管理其他系统服务。

其中WMS和AMS等重要的可以binder通信的服务都运行在SystemServer进程中。AMS和WMS这些繁忙的服务运行在单独的线程中,不忙的服务并没有单独开一个线程,有些服务会注册到ServiceManager中。

2. ServiceManager是由init进程创建并启动的

ServiceManager是Android系统中的一个系统服务,用于管理系统中的各种Binder服务。ServiceManager提供了注册、查找和获取Binder服务的功能,其他组件可以通过ServiceManager来获取系统服务。

  • 在SystemServer中启动的服务,在ServiceManager中注册的是用于进程间通信的
  • 而用于system_server进程内部通信的则注册到LocalServices中,LocalServices中都是静态方法。
  • (如AMS会把相关内部类的实例注册到LocalServices中,提供systemServer进程内部其他服务操作AMS接口,而给其他进程调用的接口封装成一个Binder类,注册到ServiceManager中)

3. SystemService是一个抽象类。

SystemService是Android系统中的各种系统服务的抽象表示,例如ActivityManagerService、PackageManagerService等。这些系统服务负责实现系统的各种功能,如进程管理、应用管理等。SystemService由SystemServiceManager进行管理,并通过Binder机制提供给其他组件使用。

4. SystemServiceManager是一个创建、启动并管理实例的生命周期的类

SystemServiceManager是SystemServer中的一个组件,用于管理系统中的各种系统服务。SystemServiceManager负责启动和管理系统服务,并提供了注册、查找和获取系统服务的功能。

在SystemServer中调用SystemServiceManager的startService方法就是通过调用onStart方法来启动实例的。在SystemServiceManager中启动的服务,如果需要注册到ServiceManager中,则需要通过publishBinderService来完成。

5. 总结

  • SystemServer是Android系统的核心服务进程,负责启动和管理系统中的各种系统服务;
  • ServiceManager负责管理系统中的Binder服务;
  • SystemServiceManager是SystemServer中的组件,负责管理系统服务;
  • SystemService是系统服务的抽象表示,由SystemServiceManager进行管理。这些组件协同工作,构成了Android系统中重要的服务管理机制。