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

systemui 的启动流程是怎么样的?

SystemUI 是 Android 系统中的一个重要组件,负责显示状态栏、通知栏、锁屏界面等系统级 UI 元素。以下是 SystemUI 的启动流程:

1. SystemServer 触发 SystemUI 启动

  • 在 Android 系统启动过程中,SystemServer 进程会调用 startOtherServices() 方法

  • 在该方法中,ActivityManagerServicesystemReady 回调方法会触发 startSystemUi() 方法

  • startSystemUi() 方法会通过 PackageManagerInternal 获取 SystemUIService 的组件名称,并通过 startServiceAsUser() 方法启动 SystemUIService

2. SystemUIService 启动

  • SystemUIService 是 SystemUI 的入口点,继承自 Service

  • SystemUIServiceonCreate() 方法中,会调用 SystemUIApplicationstartServicesIfNeeded() 方法

3. SystemUIApplication 初始化组件

  • SystemUIApplicationstartServicesIfNeeded() 方法会通过资源文件获取所有需要启动的 SystemUI 组件类名

  • 然后通过反射机制创建这些组件的实例,并调用它们的 start() 方法

  • 如果系统已经启动完成(bootCompleted),还会调用组件的 onBootCompleted() 方法

4. 核心组件启动

SystemUI 包含多个核心组件,例如:

  • 状态栏(StatusBar):创建状态栏窗口、初始化通知管理、注册广播接收器等

  • 导航栏(NavigationBar):初始化导航栏相关功能。

  • 锁屏界面(Keyguard):通过 WindowManagerService 绑定锁屏服务

  • 通知面板(NotificationPanel):管理通知的显示和交互。

  • 音量控制 UI(VolumeUI):初始化音量控制功能。

  • 最近任务管理(Recents):管理最近任务的显示和切换

5. 组件协作

  • SystemUI 的各个组件通过 Dependency 注入器相互协作

  • 它们还与 WindowManagerService 紧密配合,管理窗口的显示和交互

总结

SystemUI 的启动流程涉及多个系统服务和组件的协作。从 SystemServer 触发,到 SystemUIService 启动,再到 SystemUIApplication 初始化各个核心组件,整个过程环环相扣,确保系统 UI 的正常运行

https://juejin.cn/post/7509740897153384457

https://juejin.cn/post/7509740897153384457

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

相关文章:

  • 深入浅出 RabbitMQ-交换机详解与发布订阅模型实战
  • 软件版本、Nodejs中 ~、*、^
  • centos7 个人网站搭建之gitlab私有化部署实现线上发布
  • 鸿蒙OS 系统安全
  • 14.Linux : nfs与autofs的使用
  • 计算机基础速通--数据结构·栈与队列应用
  • 国内外大模型体验与评测技术
  • 安科瑞智慧能源管理系统在啤酒厂5MW分布式光伏防逆流控制实践
  • 【深度学习新浪潮】混元3D是什么产品?
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • BOM Cookie操作详解
  • 基于Halcon 3D的手眼标定方法
  • Kafka自动消费消息软件(自动化测试Kafka)
  • OneCode 3.0 前端架构全面研究
  • xxl-job配置相同,执行顺序
  • Android WiFi图标显示感叹号解决方法
  • Linux 线程同步与互斥
  • 链表之leetcode19:删除链表的倒数第N个结点
  • LeetCode 71~90题解
  • 危化品运输误检率↓83%!陌讯多模态融合算法在油罐车识别的工程实践
  • 机器学习③【模型训练、K近邻算法(KNN)、贝叶斯算法(Navie Bayes)、模型调优】
  • 基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • Qwen Image:开源中文渲染SOTA,重塑文生图技术边界
  • Spring Boot 整合 Web 开发全攻略
  • 机器学习Adaboost算法----SAMME算法和SAMME.R算法
  • AI+OA原生应用 麦当秀AIPPT
  • Day34 GPU训练及类的call方法
  • 【ESP32学习笔记】环境搭建和HelloEsp32
  • GPS信号捕获尝试