gpt4 book ai didi

android - 当 SystemUI 在 Android Boot 中加载时

转载 作者:行者123 更新时间:2023-11-29 14:30:34 30 4
gpt4 key购买 nike

如何知道系统 UI 何时在 Android 启动过程中加载?状态栏和导航栏 View 到底绘制在哪里?由于 SystemUI 是一个特权应用程序,因此它是否会在启动器应用程序(主屏幕)启动之前加载?我不知道。欢迎提出任何建议。

最佳答案

下面是一系列简要说明的步骤,希望能对启动时“加载”系统 UI 组件的顺序有所了解。我将在 Android 4.2 上进行演示,尽管其他版本的顺序非常相似。

  • SystemServer“完成”核心系统服务时,including StatusBarManagerService *,它通知第 3 方代码 system is ready并启动系统 UI(第 870 行),或更准确地说,SystemUIServicecom.android.systemui 包中 **。
  • SystemUIService 只是一个 Android application component谁的onCreate()方法启动/初始化 UI 组件并将对组件的引用存储在 SystemUImServices[] 数组中类型。第一个元素 (mServices[0]) 是状态栏或系统栏(状态 + 导航栏)。
  • BaseStatusBar ,抽象 SystemUI 类的实现,做一些 UI 的事情(比如添加 View 到 WindowManager 等)。此外,它还声明了一系列与 UI 相关的抽象方法(例如 createAndAddWindows()),这些方法将由子类实现,例如PhoneStatusBar .
  • 状态栏和导航栏不是由单个 View 组成的。 BaseStatusBar 的子类,如 PhoneStatusBarTabletStatusBar 等。*** 处理多个类,基本上是从 View 继承而来的。其绘图(状态栏的绘图也是如此)发生在 onDraw() 中方法。
  • 重要说明:在系统启动时,状态栏(和软件导航栏)直到启动器 Activity(带有 android.intent.category.HOME 的启动器)才可见。 ) onResume() 方法返回(并且 bootanimation 退出),尽管状态栏组成的所有 View 都已经布置好。

AOSP:
* frameworks/base/services/java/com/android/server/
** frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java
*** frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/

关于android - 当 SystemUI 在 Android Boot 中加载时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37465026/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com