在Android Boot中加载SystemUI时

时间:2016-05-26 15:23:28

标签: android android-source boot android-statusbar

如何知道系统UI何时在Android启动过程中加载? 状态栏和导航栏视图的确切位置在哪里? 由于SystemUI是特权应用,因此它是在启动器应用(主屏幕)启动之前加载的吗? 我不确定。欢迎提出任何建议。

2 个答案:

答案 0 :(得分:6)

以下是一系列简要说明的步骤,希望能够对“#34; loading"引导时的系统UI组件。我将在Android 4.2上演示它,尽管其他版本的序列非常相似。

  • SystemServer完成后#34;使用核心系统服务including StatusBarManagerService *,它会向第三方代码通知system is ready并启动系统UI(第870行),或者更准确,{{3在com.android.systemui包**。
  • SystemUIService只是Android SystemUIService,其application component方法启动/初始化UI组件,并存储mServices[] mServices[0]数组中组件的引用3}}类型。第一个元素(SystemUI)是状态栏或系统栏(状态+导航栏)。
  • onCreate(),抽象WindowManager类的实现,做了一些UI工作(比如向BaseStatusBar添加视图等)。另外,它声明了一系列与子类相关的抽象UI相关方法(例如SystemUI),例如: BaseStatusBar
  • 状态栏和导航栏不是由单个视图组成。 PhoneStatusBar作为TabletStatusBarActivity等的onResume()的子类处理基本上从createAndAddWindows()绘制的子类(状态栏的绘图也是如此)发生在PhoneStatusBar方法。
  • 重要说明:在系统启动时,状态栏(和软件导航栏)在启动器textVar = longstring.Substring(currentPos, maxStringLength) (具有{的那个)之前不会显示{3}}){{1}}方法返回(并且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 /机器人/ systemui /状态栏/ 功能

答案 1 :(得分:1)

SystemUI是首批启动的应用程序之一。因为锁屏,通知,状态栏或最近的应用程序视图等所有内容都是SystemUI的一部分。所以是的,SystemUI在你的启动器启动之前启动