Android SystemServer介绍

一、SystemServer介绍

SystemServer是Android系统中的一个重要进程,它负责启动和管理系统中的各种服务。这些服务包括WindowManagerServer(WMS)、ActivityManagerService(AMS)和PackageManagerServer(PMS)等。SystemServer进程在系统中的名称为"system_server"。

SystemServer的主要职责是启动和管理系统服务。它在系统启动时被启动,并负责创建和初始化系统服务。SystemServer会按照特定的顺序逐个启动系统服务,并确保它们按照正确的顺序初始化和运行。

SystemServer的启动过程包括以下几个步骤:

  1. 创建一个新的Zygote进程,该进程将作为SystemServer的父进程。

  2. 在Zygote进程中创建一个新的SystemServer进程。

  3. SystemServer进程启动后,会创建并初始化各个系统服务,包括WMS、AMS、PMS等。

  4. SystemServer会根据配置文件中的设置来启动其他需要的系统服务。

  5. 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等方法。通过重写这些方法,系统服务可以在不同的系统阶段执行特定的操作。

  1. onStart方法:在SystemServer启动时调用,用于初始化系统服务。在该方法中,会创建并启动各种系统服务,如ActivityManagerService、PackageManagerService、WindowManagerService等。这些系统服务是Android系统的核心组件,负责管理应用程序的运行、资源分配、窗口管理等功能。

  2. onBootPhase方法:在SystemServer启动过程中的不同阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值