Как узнать, когда пользовательский интерфейс системы загружается в Android
процесс загрузки? Где именно отображается строка состояния и отображение навигационной панели? Как SystemUI
является привилегированным приложением, так оно загружается до запуска приложения запуска (Home screen)? Я не уверен. Любое предложение приветствуется.Когда SystemUI загружается в Android-загрузку
1
A
ответ
4
Ниже приведена цепочка коротко объясненных шагов, которые, надеюсь, проливают свет на последовательность «загрузки» компонентов пользовательского интерфейса системы во время загрузки. Я продемонстрирую это на Android
4.2, хотя последовательность аналогична для других версий.
- Когда
SystemServer
это «сделан» с основными системными сервисами, includingStatusBarManagerService
*, он информирует 3-й кода партии, что system is ready и запускает системный интерфейс (линии 870), или точнее,SystemUIService
вcom.android.systemui
упаковка **. SystemUIService
это просто методAndroid
application 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 запускается до запуска вашей пусковой установки