В расширенном оконном режиме домашняя сцена состоит из нескольких одновременно видимых и интерактивных панелей приложений, а не из одной конкретной домашней активности. В расширенном оконном режиме пустая версия домашней активности используется в качестве барьера видимости для задач, выполняемых в многооконном режиме.
Хотя мастер установки (SUW) часто рассматривается как задача для главной страницы, мы рекомендуем настроить его как часть панели управления для обеспечения более стабильной и надежной работы на главной странице.
Настройте барьер видимости дома.
Убедитесь, что событие, ограничивающее видимость домашней страницы, является событием, напрямую связанным с загрузкой домашней страницы, и имеет более высокий приоритет для фильтра намерений домашней страницы, чем событие SUW.
Для получения более подробной информации см. справочную платформу в пакете StubCarLauncher . Мы рекомендуем включить этот пакет в ваши сборки и установить его для всех пользователей.
Настройте панель SUW.
Мы рекомендуем размещать SUW в отдельной панели для обработки уникальных условий и обеспечения возможности размещения вне корневой задачи по умолчанию. Вы можете настроить границы и слои этой панели.
Чтобы панель SUW не была закрыта для обзора, мы рекомендуем разместить её на относительно высоком уровне. Эта панель должна отображать и скрывать системные события _System_EnterSuwEvent и _System_ExitSuwEvent соответственно. Рассмотрим следующий пример конфигурации:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
В соответствии со стандартным приложением SUW, если панель SUW становится невидимой во время настройки, контроллер отправляет явный сигнал «Домой» в приложение SUW, чтобы сообщить, что панель SUW скрыта.
Это решает проблемы, возникающие в случаях, когда SUW знал, что пользователь пытается скрыть SUW, обрабатывая домашний сигнал, но не имея доступа к домашнему сигналу из системы.
Если у вас другие ожидания от дизайна SUW, вы можете реализовать желаемое поведение, заменив SetupPanelController на пользовательский контроллер.