当前位置: 首页 > news >正文

设计师个人网站源码深圳微信网站运营

设计师个人网站源码,深圳微信网站运营,品牌网商城,公司企业宣传片制作公司概述SystemServer 由 Zygote 进程孵化而来。init 进程启动后,会解析 init.rc 文件,启动 Zygote 进程。Zygote 随后会启动 SystemServerSystemServer 的 main 方法是一个入口,真正的启动工作在一个名为 run 的方法中完成。启动过程分为三个主要…

概述

SystemServer 由 Zygote 进程孵化而来。init 进程启动后,会解析 init.rc 文件,启动 Zygote 进程。Zygote 随后会启动 SystemServer

SystemServer 的 main 方法是一个入口,真正的启动工作在一个名为 run 的方法中完成。启动过程分为三个主要阶段:

  1. 引导阶段:启动最小化的、至关重要的基础服务
  2. 核心阶段:启动核心的系统服务,这些服务对 Android 的正常运行至关重要,但可能依赖于引导服务
  3. 其他阶段:启动所有其他的服务,包括图形、传感器、蓝牙等,这些服务通常依赖于前两个阶段的服务

详细启动流程分解

1. 入口:main 方法

frameworks/base/services/java/com/android/server/SystemServer.java

public final class SystemServer {public static void main(String[] args) {new SystemServer().run();}private void run() {// ... 详细的启动逻辑都在这里}
}

非常简单,就是创建一个 SystemServer 实例并调用其 run 方法

2. run 方法内的关键阶段

run 方法非常长,我们聚焦于其分阶段启动服务的逻辑

Phase 1: 准备工作及引导服务

在真正启动服务之前,会进行一些关键的准备工作:

  • 设置默认时区、语言区域等
  • 设置 VM 的一些参数
  • 加载 Android 运行时所需的共享库(如 libandroid_servers.so
  • 创建系统级别的 Context 对象
  • 最重要的是:创建 SystemServiceManager(SSM)和 LooperSSM 是管理所有系统服务生命周期的核心组件,负责启动、注册、以及按阶段回调服务的生命周期方法
// 创建 SystemServiceManager,它是服务的“大管家”
mSystemServiceManager = new SystemServiceManager(mSystemContext);
// 将 SSM 添加到本地服务池,方便其他服务获取和使用
LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);// 启动引导服务
startBootstrapServices();

Phase 2: 启动引导服务

startBootstrapServices() 方法启动了最基础、相互依赖最强的服务。这些服务是其他所有服务的基础

  • ActivityManagerService (AMS):
    ○ 作用
    :管理的核心,负责四大组件的生命周期、进程管理、任务栈管理等
    ○ 启动时机:最早启动的服务之一。因为它提供了其他服务注册、管理进程的基本框架。AMS 的 setSystemProcess 方法会将其自身注册到 ServiceManager,并为系统进程创建初始的 Application
    ○ mSystemServiceManager.startService(ActivityManagerService.Lifecycle.class).getService();
  • PowerManagerService (PMS):
    ○ 作用
    :管理设备的电源状态,如屏幕亮灭、CPU休眠等
    ○ 依赖:需要 AMS 来管理其相关的 wakelocks
    ○ mSystemServiceManager.startService(PowerManagerService.class);
  • PackageManagerService (PMS):
    ○ 作用
    :应用程序包的管理者,负责应用的安装、卸载、权限管理和解析等
    ○ 启动时机:非常早,因为几乎所有服务都需要查询应用信息。它的启动过程非常耗时,因为它要扫描所有已安装的 APK
    ○ PackageManagerService.main(...);
  • 其他关键引导服务:
    ○ DisplayManagerService
    :显示管理
    ○ UserManagerService:多用户管理
    ○ SensorService:传感器服务

Phase 3: 启动核心服务

startCoreServices() 方法启动了一些核心的、非引导但必不可少的服务

  • BatteryService:电池状态服务
  • UsageStatsService:应用使用情况统计服务
  • WebViewUpdateService:WebView 更新服务

Phase 4: 启动其他服务

startOtherServices() 方法是整个启动过程中最长的方法,它启动了剩下的所有服务。这些服务通常依赖于前面启动的引导和核心服务

这个阶段的服务非常多,我们列举几个最重要的:

  • WindowManagerService (WMS):
    ○ 作用
    :窗口管理、屏幕绘制、输入事件分发等
    ○ 依赖:严重依赖 AMS(管理应用窗口)、PowerManagerService(控制屏幕亮灭)、DisplayManagerService(获取显示设备信息)
    wm = WindowManagerService.main(...);
    ○ ServiceManager.addService(Context.WINDOW_SERVICE, wm); // 注册到 ServiceManager
  • InputManagerService (IMS):
    ○ 作用
    :管理输入设备(触摸屏、按键等)并将输入事件分发给合适的窗口
    ○ 依赖:依赖 WMS(获取窗口信息来决定事件目标)
    ○ inputManager = new InputManagerService(...);

一个关键动作:AMS.systemReady()

在所有其他服务都启动完毕后,会调用 ActivityManagerService 的 systemReady 方法。这是一个非常重要的信号,它标志着系统服务已经全部就绪

// 在 startOtherServices 方法的最后
mActivityManagerService.systemReady(() -> {// 当系统真正准备就绪后,会回调这里Slog.i(TAG, "Making services ready");// 启动SystemUI(状态栏、导航栏等)// 显示系统启动完毕的锁屏界面
}, BOOT_TIMINGS_TRACE_LOG);

在 AMS.systemReady() 内部,它会:

  1. 发送 ACTION_BOOT_COMPLETED 广播,通知所有应用系统启动已完成
  2. 启动系统自带的应用程序(如桌面 Launcher)。如果没有 Launcher 启动,用户将看不到任何界面
  3. 完成最终的准备工作

总结与设计思想

阶段主要服务特点与依赖
引导阶段ActivityManagerServicePowerManagerServicePackageManagerServiceDisplayManagerService最小依赖集。这些服务是系统的基石,相互之间存在紧密的依赖关系,必须最先启动
核心阶段BatteryServiceUsageStatsService系统核心功能。这些服务不参与引导,但对系统正常运行至关重要,且依赖引导服务
其他阶段WindowManagerServiceInputManagerServiceBluetoothServiceNotificationManagerService 等功能型服务。这些服务数量庞大,提供具体的系统功能,通常严重依赖于引导和核心服务

设计思想:

  • 解耦与依赖管理:通过分阶段启动,清晰地定义了服务之间的依赖关系。后启动的服务可以安全地调用先启动的服务
  • 并行启动优化SystemServiceManager 会尝试并行启动那些没有相互依赖的服务(例如,在 startOtherServices 阶段),以缩短系统启动时间
  • 生命周期管理:所有系统服务都实现了一个通用的 SystemService 接口。SSM 会在不同的启动阶段回调服务的 onBootPhase(int phase) 方法(如 PHASE_BOOT_COMPLETED),让服务知道系统当前启动到了哪个阶段,以便执行相应的初始化工作
  • “就绪”信号AMS.systemReady() 是系统启动完成的最终标志,它协调了服务启动和应用程序启动之间的衔接

整个流程就像搭建一座大楼:先打地基(引导服务),再建主体结构(核心服务),最后进行装修和安装各种设施(其他服务),最终宣布大楼正式投入使用(systemReady

http://www.dtcms.com/a/401162.html

相关文章:

  • 手机网站图片切换特效钰鸣厦门网站建设
  • 河北网站制作报价有没有代加工的网站
  • 徐州网站设计制作建设不能制作网页的软件是
  • 一个可以做行程的网站网页跳转微信小程序
  • 免费空间申请网站中国行业数据分析网
  • 服务器建设网站软件下载采购网站平台
  • 佛山企业制作网站地方门户网站系统
  • 网站架构的重要性苏州有什么好玩的景点景区
  • 无锡高端网站建设机构建设五证在那个网站可以查
  • 广州做网站比较有名的公司刚刚建设的网站如何放图片
  • 建设银行电商网站网站建设报告书范文
  • 网站运营工作计划便利的龙岗网站设计
  • 凡科自助建站网站wordpress模板汉化
  • 网站建设优化推广贵州外贸生意如何做
  • 长沙h5网站建设慧聪网首页
  • 新郑做网站公司茂名手机网站建设公司名录
  • 新手学做网站 pdf在线做logo
  • 网站开发毕设的需求分析html5视频网站开发
  • 搭建网站详细步骤c2c网站建设要多少钱
  • 网站建设的进度计划书登陆官网登录入口
  • 做app推广上哪些网站招工在哪个平台最好
  • 网站视频弹窗代码建筑网方成龙
  • 蒙古文网站建设工作计划wordpress 宝宝主题
  • 珠海建站软件网站编程薪资
  • 江苏高端网站建设wordpress悬停插件
  • 建设门户网站系统的必要性网页设计兼职平台
  • 西安免费做网站价格单位邮箱怎么查询
  • 哪里找免费网站重庆建网站
  • 怎么做刷会员的网站中国建筑网络教育平台
  • 黄山北京网站建设医疗网站模板