Testkonformität mit WindowManager-Invarianten maximieren

Um eine einheitliche und hochwertige Nutzererfahrung zu bieten und Probleme zu vermeiden, die zu Fehlern in der Compatibility Test Suite (CTS) führen, müssen Sie die hier beschriebenen WM-Grundprinzipien (WindowManager) implementieren. Diese Grundprinzipien tragen dazu bei, die Richtlinien zur Qualität von Auto-Apps einzuhalten. Diese Grundprinzipien gelten für:

  • Android-Versionen mit einer Architektur für den Mehrfenstermodus, die in Android 14 eingeführt und in Android 15 mit der skalierbaren UI fortgesetzt wurde

  • Skalierbare Android-UI und Ihre eigenen benutzerdefinierten Implementierungen

Wenn Sie die Grundprinzipien anwenden, können Sie die meisten Probleme im Zusammenhang mit CTS-Compliance- und Funktionstests proaktiv vermeiden.

Terminologie

Invariant
Eine logische Bedingung, die während der Ausführung einer App immer erfüllt ist und zu struktureller Integrität führt. Eine Invariante fungiert als Grenzregel.
Spezielle Aktivität
Diese kritische App-Aktivität, auch als Auto-UI-Aktivität oder System-UI-Aktivität bezeichnet, hat einen eigenen Bereich auf dem Bildschirm, der immer oder die meiste Zeit sichtbar ist, auch wenn der Nutzer Home drückt, z. B. eine primäre Navigations- oder Cluster-App.
Standardaktivität
Jede Standard-App-Aktivität, die nicht für die Kernbenutzeroberfläche des Systems entscheidend ist, z. B. eine Drittanbieter-Media-App, die über das App-Raster gestartet wird.

WM-Grundprinzipien

Um die CTS-Compliance zu maximieren, wenden Sie diese Grundprinzipien in Ihren WM-Implementierungen an.

Stabile Konfiguration beim Starten der Aktivität verwenden

Starten Sie jede neue Standardaktivität mit einer einzelnen WM-Übergang, der die endgültige Position, Größe und Dichte festlegt. Sie dürfen nicht sofort nach dem ersten Übergang einen zweiten Übergang auslösen, der die Fensterkonfiguration der zugrunde liegenden Aufgabe ändert (z. B. Größe oder Dichte). Andernfalls wird die Konfiguration sofort nach dem Erstellen der Aktivität geändert.

Standardaktivitäten in den Status „Beendet“ verschieben

Wenn der Nutzer zur Startaufgabe oder zum Startbildschirm navigiert, müssen Sie alle laufenden Standardaktivitäten in den Status „Beendet“ verschieben, um den vorhersehbaren Android-App-Lebenszyklus beizubehalten, der für CTS-Tests erforderlich ist. Weitere Informationen zu den Erwartungen an den App-Lebenszyklus in Automotive-Umgebungen finden Sie unter Nutzung verhindern, wenn Einschränkungen der Nutzererfahrung aktiv sind.

Verhindern, dass Inhalte von Standardaktivitäten verdeckt werden

Zeichnen Sie keine benutzerdefinierten Dekorationen oder UI-Elemente, die den Inhalt einer Standardaktivität verdecken. Wenn Sie benutzerdefinierte Overlays zeichnen (z. B. eine benutzerdefinierte Klimasteuerungsleiste), müssen Sie die Abmessungen mit SystemOverlay-Einzügen an das System melden. Verwenden Sie für Android 15 und höher DecorPanel in der skalierbaren UI. Apps verwenden diese Einzüge, um Inhalte sicher zu layouten.

Overlays bei Anfragen im immersiven Modus ausblenden

Wenn eine App den immersiven Modus anfordert, müssen Sie alle temporären benutzerdefinierten UI-Elemente ausblenden und die zugehörigen SystemOverlay-Einzüge entfernen. Permanente Verdeckungen beeinträchtigen die Pixelerwartungen einer App. Weitere Informationen dazu, wie Apps den immersiven Modus anfordern und verarbeiten, finden Sie unter Systemleisten, immersiver Modus und Edge-to-Edge-Rendering.

Abgerundete Ecken nur auf Displayebene anwenden

Wenden Sie abgerundete Ecken nur auf Displayebene an. Verwenden Sie dazu die entsprechenden Ressourcenkonfigurationen in frameworks/base. Wenden Sie keine beliebigen abgerundeten Ecken auf die Oberfläche einer Standardaktivität an.

Andernfalls werden UI-Elementtests beeinträchtigt. Als vorübergehende Maßnahme können Sie denselben Radius für abgerundete Ecken für das Display angeben, den Sie auf die Oberfläche der Standardaktivität anwenden.

App-Größe bei Anfragen im immersiven Modus beibehalten

Wenn eine App den immersiven Modus anfordert, ändern Sie nicht die Größe des App-Fensters. Andernfalls wird eine störende Konfigurationsänderung ausgelöst. Bieten Sie stattdessen eine vom Nutzer steuerbare Vollbildschaltfläche an, um die App zu maximieren.