当 SystemUI 在 Android 启动时加载
When SystemUI loads in Android Boot
如何知道系统 UI 何时在 Android
启动过程中加载?
状态栏和导航栏视图到底绘制在哪里?
由于 SystemUI
是特权应用程序,因此它是否会在启动器应用程序(主屏幕)启动之前加载?
我不知道。欢迎任何建议。
SystemUI 是最先启动的应用程序之一。因为锁屏、通知、状态栏或最近的应用程序视图等所有内容都是 SystemUI 的一部分。所以是的,SystemUI 在启动器启动之前启动
下面是一系列简要说明的步骤,希望能在引导时阐明 "loading" 系统 UI 组件的顺序。我将在 Android
4.2 上演示它,尽管其他版本的顺序非常相似。
- 当
SystemServer
与核心系统服务"done"时,com.android.systemui
包中的including StatusBarManagerService
*, it informs the 3rd party code that the system is ready and starts the system UI (line 870), or more precise, SystemUIService
**。
SystemUIService
只是一个 Android
application component whose onCreate()
method starts/initializes UI components and stores references to the components in the mServices[]
array of SystemUI
类型。第一个元素 (mServices[0]
) 是状态栏或系统栏(状态 + 导航栏)。
BaseStatusBar
, the implementation of the abstract SystemUI
class, does some UI stuff (like adding views to WindowManager
etc.). Additionally it declares a range of abstract UI-related methods (e.g. createAndAddWindows()
) to be implemented by subclasses, e.g. PhoneStatusBar
.
- 状态栏和导航栏不是由单个视图组成的。
BaseStatusBar
的 sub类 如 PhoneStatusBar
、TabletStatusBar
等 *** 处理多个 类 基本上是从 View
whose drawing (so does status bar's drawing) takes place in the onDraw()
方法继承而来的。
- 重要说明: 在系统启动时,状态栏(和软件导航栏)直到启动器
Activity
(带有 android.intent.category.HOME
) onResume()
方法 returns (并且 bootanimation 退出)尽管状态栏组成的所有视图都已经布置好了。
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/
如何知道系统 UI 何时在 Android
启动过程中加载?
状态栏和导航栏视图到底绘制在哪里?
由于 SystemUI
是特权应用程序,因此它是否会在启动器应用程序(主屏幕)启动之前加载?
我不知道。欢迎任何建议。
SystemUI 是最先启动的应用程序之一。因为锁屏、通知、状态栏或最近的应用程序视图等所有内容都是 SystemUI 的一部分。所以是的,SystemUI 在启动器启动之前启动
下面是一系列简要说明的步骤,希望能在引导时阐明 "loading" 系统 UI 组件的顺序。我将在 Android
4.2 上演示它,尽管其他版本的顺序非常相似。
- 当
SystemServer
与核心系统服务"done"时,com.android.systemui
包中的includingStatusBarManagerService
*, it informs the 3rd party code that the system is ready and starts the system UI (line 870), or more precise,SystemUIService
**。 SystemUIService
只是一个Android
application component whoseonCreate()
method starts/initializes UI components and stores references to the components in themServices[]
array ofSystemUI
类型。第一个元素 (mServices[0]
) 是状态栏或系统栏(状态 + 导航栏)。BaseStatusBar
, the implementation of the abstractSystemUI
class, does some UI stuff (like adding views toWindowManager
etc.). Additionally it declares a range of abstract UI-related methods (e.g.createAndAddWindows()
) to be implemented by subclasses, e.g.PhoneStatusBar
.- 状态栏和导航栏不是由单个视图组成的。
BaseStatusBar
的 sub类 如PhoneStatusBar
、TabletStatusBar
等 *** 处理多个 类 基本上是从View
whose drawing (so does status bar's drawing) takes place in theonDraw()
方法继承而来的。 - 重要说明: 在系统启动时,状态栏(和软件导航栏)直到启动器
Activity
(带有android.intent.category.HOME
)onResume()
方法 returns (并且 bootanimation 退出)尽管状态栏组成的所有视图都已经布置好了。
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/