一、SystemServer介绍
SystemServer是Android系统中的一个重要进程,它负责启动和管理系统中的各种服务。这些服务包括WindowManagerServer(WMS)、ActivityManagerService(AMS)和PackageManagerServer(PMS)等。SystemServer进程在系统中的名称为"system_server"。
SystemServer的主要职责是启动和管理系统服务。它在系统启动时被启动,并负责创建和初始化系统服务。SystemServer会按照特定的顺序逐个启动系统服务,并确保它们按照正确的顺序初始化和运行。
SystemServer的启动过程包括以下几个步骤:
-
创建一个新的Zygote进程,该进程将作为SystemServer的父进程。
-
在Zygote进程中创建一个新的SystemServer进程。
-
SystemServer进程启动后,会创建并初始化各个系统服务,包括WMS、AMS、PMS等。
-
SystemServer会根据配置文件中的设置来启动其他需要的系统服务。
-
SystemServer会监听系统广播和事件,并根据需要调用相应的系统服务进行处理。
SystemServer是android基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process进程是android java虚拟机跑的第一个进程,从Zygote 创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕system server而展开,所以,当system_process死掉了,系统必须重启。
二、SystemServer相关类
SystemServer
SystemServer负责启动和管理系统的核心服务。SystemServer.java在系统启动过程中被调用,它会创建并启动各种系统服务,例如ActivityManagerService、PackageManagerService、WindowManagerService等。这些系统服务是Android系统的基础,它们提供了各种功能和服务,使得Android系统能够正常运行。
SystemServer文件路径:
frameworks/base/core/java/com/android/server/SystemServer.java
SystemServer定义:
public final class SystemServer implements Dumpable {
private final class SystemServerDumper extends Binder {} //Service used to dump {@link SystemServer} state that is not associated with any service.
}
SystemServer方法:
public static void main(String[] args) :The main entry point from zygote.
public SystemServer() :构造方法
private void run()
private void performPendingShutdown()
private void createSystemContext()
private void startBootstrapServices(@NonNull TimingsTraceAndSlog t): Starts the small tangle of critical services that are needed to get the system off the ground.
private void startCoreServices(@NonNull TimingsTraceAndSlog t) :Starts some essential services that are not tangled up in the bootstrap process.
private void startOtherServices(@NonNull TimingsTraceAndSlog t) :Starts a miscellaneous grab bag of stuff that has yet to be refactored and organized.
private void startApexServices(@NonNull TimingsTraceAndSlog t):Starts system services defined in apexes.
private void startSystemCaptionsManagerService(@NonNull Context context, @NonNull TimingsTraceAndSlog t)
private void startTextToSpeechManagerService(@NonNull Context context, @NonNull TimingsTraceAndSlog t)
private void startContentCaptureService(@NonNull Context context, @NonNull TimingsTraceAndSlog t)
private void startAttentionService(@NonNull Context context, @NonNull TimingsTraceAndSlog t)
private void startRotationResolverService(@NonNull Context context, @NonNull TimingsTraceAndSlog t)
private void startAmbientContextService(@NonNull TimingsTraceAndSlog t)
private static void startSystemUi(Context context, WindowManagerService windowManager)
private static boolean handleEarlySystemWtf(final IBinder app, final String tag, boolean system, final ApplicationErrorReport.ParcelableCrashInfo crashInfo, int immediateCallerPid)
SystemService
SystemService是Android系统中的一个关键类,它负责管理和提供各种系统服务。在Android框架中,系统服务是一组用于提供核心功能的组件,例如窗口管理、通知管理、电源管理等。SystemService类是所有系统服务的基类,其他系统服务要么直接继承SystemService类,要么创建静态内部类Lifecycle继承SystemService类。
该类定义了系统服务的基本结构和生命周期方法,包括onStart、onBootPhase、onSwitchUser等方法。通过重写这些方法,系统服务可以在不同的系统阶段执行特定的操作。
-
onStart方法:在SystemServer启动时调用,用于初始化系统服务。在该方法中,会创建并启动各种系统服务,如ActivityManagerService、PackageManagerService、WindowManagerService等。这些系统服务是Android系统的核心组件,负责管理应用程序的运行、资源分配、窗口管理等功能。
-
onBootPhase方法:在SystemServer启动过程中的不同阶