Nel windowing avanzato, la scena Home è composta da più riquadri dell'app visibili e interattivi contemporaneamente anziché da un'attività Home specifica. Il windowing avanzato utilizza una versione vuota di un'attività Home come barriera di visibilità per le attività multi-finestra.
Sebbene la procedura guidata di configurazione (SUW) sia spesso considerata un'attività Home, ti consigliamo di configurarla come parte di un riquadro per creare esperienze Home più coerenti e affidabili.
Configurare la barriera di visibilità Home
Verifica che l'attività della barriera di visibilità Home sia un'attività Home con avvio diretto che abbia una priorità più alta per il filtro per intent Home rispetto all'attività SUW.
Per scoprire di più, consulta la piattaforma di riferimento nel pacchetto StubCarLauncher.
Ti consigliamo di includere questo pacchetto nelle build e di installarlo per tutti gli utenti.
Configurare il riquadro SUW
Ti consigliamo di inserire SUW in un riquadro dedicato per gestire condizioni uniche e consentire un posizionamento dedicato al di fuori dell'attività root predefinita. Puoi configurare i limiti e i livelli di questo riquadro.
Per evitare che SUW sia ostruito, ti consigliamo di posizionarlo in un livello relativamente alto. Questo riquadro deve mostrare e nascondere rispettivamente gli eventi di sistema di _System_EnterSuwEvent e _System_ExitSuwEvent.
Considera questa configurazione di esempio:
<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>
Per allinearsi alla tipica app SUW, se il riquadro SUW diventa invisibile durante la configurazione, il controller invia un segnale Home esplicito all'attività SUW per annunciare che SUW è nascosto.
In questo modo si risolvono i casi in cui SUW sapeva che l'utente stava tentando di nascondere SUW utilizzando l'intent Home, ma senza avere accesso al segnale Home dal sistema.
Se hai aspettative diverse per la progettazione di SUW, puoi implementare il comportamento preferito sostituendo SetupPanelController con un controller personalizzato.