Android 12 S SystemServer启动过程中的服务分析
SystemServer是由zygote启动的启动后会先走main方法看注释也可以看到此方法是The main entry point from zygote.接着往下走就到了run方法frameworks/base/services/java/com/android/server/SystemServer.javapublic static void main(String[] args) { new SystemServer().run(); } private void run() { ... Looper.prepareMainLooper(); Looper.getMainLooper().setSlowLogThresholdMs( SLOW_DISPATCH_THRESHOLD_MS, SLOW_DELIVERY_THRESHOLD_MS); // Start services. try { t.traceBegin(StartServices); startBootstrapServices(t); startCoreServices(t); startOtherServices(t); } catch (Throwable ex) { Slog.e(System, ******************************************); Slog.e(System, ************ Failure starting system services, ex); throw ex; } finally { t.traceEnd(); // StartServices } ... // Loop forever. Looper.loop(); throw new RuntimeException(Main thread loop unexpectedly exited); }然后走startBootstrapServices这里主要是启动一些系统的关键服务这些服务具有复杂的相互依赖关系。/** * Starts the small tangle of critical services that are needed to get the system off the * ground. These services have complex mutual dependencies which is why we initialize them all * in one place here. Unless your service is also entwined in these dependencies, it should be * initialized in one of the other functions. */ private void startBootstrapServices(NonNull TimingsTraceAndSlog t) { t.traceBegin(startBootstrapServices); ... // Activity manager runs the show. t.traceBegin(StartActivityManager); // TODO: Might need to move after migration to WM. ActivityTaskManagerService atm mSystemServiceManager.startService( ActivityTaskManagerService.Lifecycle.class).getService(); mActivityManagerService ActivityManagerService.Lifecycle.startService( mSystemServiceManager, atm); mActivityManagerService.setSystemServiceManager(mSystemServiceManager); mActivityManagerService.setInstaller(installer); mWindowManagerGlobalLock atm.getGlobalLock(); t.traceEnd(); ... // Set up the Application instance for the system process and get started. t.traceBegin(SetSystemProcess); mActivityManagerService.setSystemProcess(); t.traceEnd(); ... t.traceBegin(StartPackageManagerService); try { Watchdog.getInstance().pauseWatchingCurrentThread(packagemanagermain); mPackageManagerService PackageManagerService.main(mSystemContext, installer, domainVerificationService, mFactoryTestMode ! FactoryTest.FACTORY_TEST_OFF, mOnlyCore); } finally { Watchdog.getInstance().resumeWatchingCurrentThread(packagemanagermain); } }然后走startCoreServices方法这个方法主要是启动一些在开机过程中没有互相依赖的基本服务。/** * Starts some essential services that are not tangled up in the bootstrap process. */ private void startCoreServices(NonNull TimingsTraceAndSlog t) { t.traceBegin(startCoreServices); // Service for system config t.traceBegin(StartSystemConfigService); mSystemServiceManager.startService(SystemConfigService.class); t.traceEnd(); t.traceBegin(StartBatteryService); // Tracks the battery level. Requires LightService. mSystemServiceManager.startService(BatteryService.class); t.traceEnd(); ... // Service for GPU and GPU driver. t.traceBegin(GpuService); mSystemServiceManager.startService(GpuService.class); t.traceEnd(); // Handles system process requests for remotely provisioned keys data. t.traceBegin(StartRemoteProvisioningService); mSystemServiceManager.startService(RemoteProvisioningService.class); t.traceEnd(); // TODO(b/277600174): Start CpuMonitorService on all builds and not just on debuggable // builds once the Android JobScheduler starts using this service. if (Build.IS_DEBUGGABLE || Build.IS_ENG) { // Service for CPU monitor. t.traceBegin(CpuMonitorService); mSystemServiceManager.startService(CpuMonitorService.class); t.traceEnd(); } t.traceEnd(); // startCoreServices }然后走startOtherServices方法此方法中主要是启动一些系统中其他的服务/** * Starts a miscellaneous grab bag of stuff that has yet to be refactored and organized. */ private void startOtherServices(NonNull TimingsTraceAndSlog t) { t.traceBegin(startOtherServices); final Context context mSystemContext; DynamicSystemService dynamicSystem null; IStorageManager storageManager null; NetworkManagementService networkManagement null; IpSecService ipSecService null; VpnManagerService vpnManager null; VcnManagementService vcnManagement null; NetworkStatsService networkStats null; NetworkPolicyManagerService networkPolicy null; NsdService serviceDiscovery null; WindowManagerService wm null; SerialService serial null; NetworkTimeUpdateService networkTimeUpdater null; InputManagerService inputManager null; TelephonyRegistry telephonyRegistry null; ConsumerIrService consumerIr null; MmsServiceBroker mmsService null; HardwarePropertiesManagerService hardwarePropertiesService null; PacProxyService pacProxyService null; ... t.traceBegin(StartVibratorManagerService); mSystemServiceManager.startService(VibratorManagerService.Lifecycle.class); t.traceEnd(); t.traceBegin(StartDynamicSystemService); dynamicSystem new DynamicSystemService(context); ServiceManager.addService(dynamic_system, dynamicSystem); t.traceEnd(); if (!isWatch) { t.traceBegin(StartConsumerIrService); consumerIr new ConsumerIrService(context); ServiceManager.addService(Context.CONSUMER_IR_SERVICE, consumerIr); t.traceEnd(); } t.traceBegin(StartAlarmManagerService); mSystemServiceManager.startService(ALARM_MANAGER_SERVICE_CLASS); t.traceEnd(); t.traceBegin(StartInputManagerService); inputManager new InputManagerService(context); t.traceEnd(); ... }以下是一个在systemserver中启动AMS的流程且WindowManagerService以及ActivityManagerService等的服务的进程号都是SystemServer但是是跑在不同的线程上

相关新闻

CPQ软件推荐有实力品牌 核心技术与知识产权核验指南

CPQ软件推荐有实力品牌 核心技术与知识产权核验指南

本文速览当前制造业数字化转型进程中,65%的国企优先选择自主可控工业软件,CPQ作为销售端核心数字化工具,其技术实力与知识产权储备直接决定系统的稳定性、适配性与长期迭代能力。本文梳理CPQ品牌技术实力的核心评判标准、知识产权核验方法&am…

2026/8/17 15:39:33 阅读更多 →
告别Steam客户端,WorkshopDL免费解锁742款游戏创意工坊模组

告别Steam客户端,WorkshopDL免费解锁742款游戏创意工坊模组

告别Steam客户端,WorkshopDL免费解锁742款游戏创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 如果你在 Epic、GOG 或微软商店买过游戏,多半…

2026/8/17 14:02:54 阅读更多 →
Steam创意工坊下载器终极指南:用WorkshopDL跨平台畅享海量模组

Steam创意工坊下载器终极指南:用WorkshopDL跨平台畅享海量模组

Steam创意工坊下载器终极指南:用WorkshopDL跨平台畅享海量模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 半年前,我在 Epic 平台入手了《Garrys Mo…

2026/8/16 13:54:53 阅读更多 →

最新新闻

Claude Code 合法低成本使用指南:从 API 集成到 VS Code 实战

Claude Code 合法低成本使用指南:从 API 集成到 VS Code 实战

最近在开发者社区里,Claude Code 的热度持续攀升,很多朋友都想体验这款由 Anthropic 推出的、专为编程场景优化的 AI 助手。然而,无论是官网订阅还是 API 调用,都绕不开一个现实问题:成本。尤其是在尝试各种模型、进行…

2026/8/17 16:08:44 阅读更多 →
Claude Code 完整配置指南:从安装到自定义 API 接入与开源模型实践

Claude Code 完整配置指南:从安装到自定义 API 接入与开源模型实践

最近在开发者社区看到不少关于 Claude Code 的讨论,尤其是围绕其使用成本和接入方式。作为一个长期关注 AI 辅助编程工具的技术博主,我注意到很多朋友对如何经济、高效地使用 Claude Code 存在疑问,网上信息也比较零散。本文将系统性地梳理 C…

2026/8/17 16:08:44 阅读更多 →
车载通信模块高速移动场景下基站切换稳定性测试全解析

车载通信模块高速移动场景下基站切换稳定性测试全解析

这次我们来看一个关于车载通信模块在高速移动场景下的稳定性测试项目。核心聚焦于“C5800-688巴龙MT5700模块”在高速行驶过程中,面对基站切换这一关键挑战时的表现。对于车载终端、远程监控、车队管理等应用来说,通信的连续性和稳定性是生命线&#xff…

2026/8/17 16:08:44 阅读更多 →
车载通信模块高速切换稳定性测试:从原理到实践

车载通信模块高速切换稳定性测试:从原理到实践

这次我们来看一个在车载通信领域非常关键的技术点:C5800-688巴龙MT5700模块在高速移动场景下切换基站时的稳定性表现。对于自动驾驶、车联网、远程监控等需要持续可靠网络连接的应用来说,这直接决定了用户体验和系统功能的上限。这个模块的核心价值在于&…

2026/8/17 16:08:44 阅读更多 →
Oracle JDBC驱动选型指南:版本对照、集成实战与避坑

Oracle JDBC驱动选型指南:版本对照、集成实战与避坑

1. 项目概述:为什么你需要一份清晰的Oracle JDBC驱动对照表?搞Java开发,尤其是做企业级应用,十有八九绕不开Oracle数据库。而连接Oracle,那个小小的ojdbc.jar文件就是你的“通行证”。但就是这个看似简单的驱动包&…

2026/8/17 16:08:44 阅读更多 →
AI编程助手Claude Code在VS Code中的合规配置与多模型接入指南

AI编程助手Claude Code在VS Code中的合规配置与多模型接入指南

在 AI 辅助编程领域,Claude Code 作为 Anthropic 推出的智能编程助手,因其强大的代码生成、解释和调试能力,受到了开发者的广泛关注。然而,其官方订阅费用或 API 调用成本,对于个人开发者或学生而言,可能是…

2026/8/17 16:07:43 阅读更多 →

日新闻

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

2026/8/17 0:00:08 阅读更多 →
LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:00:08 阅读更多 →
飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/17 0:00:08 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →