2016-05-26 10 views
1

Как узнать, когда пользовательский интерфейс системы загружается в Android процесс загрузки? Где именно отображается строка состояния и отображение навигационной панели? Как SystemUI является привилегированным приложением, так оно загружается до запуска приложения запуска (Home screen)? Я не уверен. Любое предложение приветствуется.Когда SystemUI загружается в Android-загрузку

ответ

4

Ниже приведена цепочка коротко объясненных шагов, которые, надеюсь, проливают свет на последовательность «загрузки» компонентов пользовательского интерфейса системы во время загрузки. Я продемонстрирую это на Android 4.2, хотя последовательность аналогична для других версий.

  • Когда SystemServer это «сделан» с основными системными сервисами, including StatusBarManagerService *, он информирует 3-й кода партии, что system is ready и запускает системный интерфейс (линии 870), или точнее, SystemUIService в com.android.systemui упаковка **.
  • SystemUIService это просто метод Androidapplication component которого начинается onCreate()/инициализирует компоненты пользовательского интерфейса и хранит ссылки на компоненты в mServices[] массиве SystemUI типа. Первый элемент (mServices[0]) является либо строкой состояния, либо системной панелью (статус + навигационная панель).
  • BaseStatusBar, реализация абстрактного класса SystemUI, делает некоторые элементы интерфейса (например, добавление просмотров на WindowManager и т. Д.). Кроме того, он объявляет ряд абстрактных методов, связанных с пользовательским интерфейсом (например, createAndAddWindows()), которые должны быть реализованы подклассами, например. PhoneStatusBar.
  • Строка состояния и панель навигации не состоят из одного вида. Такие подклассы BaseStatusBar как PhoneStatusBar, TabletStatusBar и т. Д. *** относятся к нескольким классам, в основном подклассифицированным от View, чей чертеж (например, чертеж строки состояния) имеет место в методе onDraw().
  • Важное примечание: на системе загрузки в строке состояния (и программного обеспечения навигационной панели) не будет виден, пока пусковой Activity «s (один с android.intent.category.HOME) onResume() возвращает метод (и bootanimation выходы), несмотря на то, все взгляды, что строка состояния составлена ​​из уже выложены.

AOSP:
* рамки/база/услуги/Java/COM/Android/сервер/
** каркасы/базовые/пакеты/SystemUI/SRC/COM/андроида /systemui/SystemUIService.java
*** рамки/база/пакеты/systemUI/SRC/COM/Android/systemui/статусной/

1

SystemUI - одно из первых запущенных приложений. Поскольку все элементы, такие как Lockscreen, Notifications, Statusbar или последние приложения, являются частью SystemUI. Так что SystemUI запускается до запуска вашей пусковой установки