Massimizzare la conformità dei test con gli invarianti di WindowManager

Per implementare un'esperienza utente coerente e di alta qualità e per evitare problemi che causano errori nel Compatibility Test Suite (CTS), implementa i principi di base di WindowManager (WM) descritti qui. Questi principi contribuiscono a garantire la conformità alle linee guida sulla qualità delle app per auto. Questi principi si applicano a:

  • Release di Android che utilizzano un'architettura multi-finestra, iniziata in Android 14 e continuata in Android 15 con l'interfaccia utente scalabile.

  • Interfaccia utente scalabile di Android e implementazioni personalizzate

Applicando i principi, eviterai in modo proattivo la maggior parte dei problemi di conformità CTS e dei test funzionali.

Terminologia

invariante
Una condizione logica che rimane vera durante l'esecuzione di un'app che porta all'integrità strutturale. Un'invariante funge da regola di confine.
attività speciale
Nota anche come attività dell'interfaccia utente automatica o attività dell'interfaccia utente di sistema, questa attività dell'app critica ha un'area dedicata sullo schermo che è sempre visibile o è visibile la maggior parte del tempo, anche quando l'utente preme Home,ad esempio una navigazione principale o un'app cluster.
attività standard
Qualsiasi attività dell'app standard che non sia fondamentale per l'interfaccia utente principale del sistema, ad esempio un'app multimediale di terze parti avviata dalla griglia delle app.

Principi di WM

Per massimizzare la conformità CTS, applica questi principi nelle implementazioni di WM.

Utilizzare una configurazione stabile all'avvio dell'attività

Avvia ogni nuova attività standard con una singola transizione WM che imposta la posizione, le dimensioni e la densità finali. Non devi attivare una seconda transizione che modifichi la configurazione della finestra dell'attività sottostante (ad esempio dimensioni o densità) immediatamente dopo la prima, in quanto ciò causa una modifica della configurazione immediatamente dopo la creazione dell'attività.

Spostare le attività standard allo stato di arresto

Quando l'utente passa all'attività o alla scena Home, devi spostare tutte le attività standard in esecuzione allo stato di arresto per mantenere il ciclo di vita prevedibile dell'app per Android richiesto dai test CTS. Per ulteriori informazioni sulle aspettative del ciclo di vita delle app negli ambienti automobilistici, consulta Impedire l'utilizzo mentre sono attive le limitazioni dell'esperienza utente.

Impedire l'oscuramento dei contenuti delle attività standard

Non disegnare decorazioni o elementi dell'interfaccia utente personalizzati che oscurino i contenuti di un'attività standard. Se disegni overlay personalizzati (ad esempio una barra di controllo del clima personalizzata), devi segnalare le dimensioni al sistema con gli insetti SystemOverlay. Per Android 15 e versioni successive, utilizza DecorPanel nell'interfaccia utente scalabile. Le app si basano su questi insetti per disporre i contenuti in modo sicuro.

Nascondere gli overlay nella richiesta della modalità immersiva

Quando un'app richiede la modalità immersiva, devi nascondere tutti gli elementi dell'interfaccia utente personalizzati temporanei e rimuovere i relativi insetti SystemOverlay. Le ostruzioni persistenti interferiscono con le aspettative dei pixel di un'app. Per informazioni dettagliate su come le app richiedono e gestiscono la modalità immersiva, consulta Barre di sistema, modalità immersiva e rendering edge-to-edge.

Applicare gli angoli arrotondati solo a livello di display

Applica gli angoli arrotondati solo a livello di display utilizzando le configurazioni delle risorse appropriate in frameworks/base. Non applicare angoli arrotondati arbitrari alla superficie di un'attività standard.

In questo modo si interferisce con i test degli elementi dell'interfaccia utente. Come misura temporanea, puoi specificare lo stesso raggio degli angoli arrotondati per il display che applichi alla superficie dell'attività standard.

Mantenere le dimensioni dell'app nella richiesta della modalità immersiva

Quando un'app richiede di entrare in modalità immersiva, non ridimensionare la finestra dell'app. In questo modo si attiva una modifica della configurazione che causa interruzioni. In alternativa, per massimizzare l'app, offri un pulsante a schermo intero controllato dall'utente.