Maximiza el cumplimiento de las pruebas con las invariantes de WindowManager

Para implementar una experiencia del usuario coherente y de alta calidad, y evitar problemas que provoquen fallas en el Conjunto de pruebas de compatibilidad (CTS), implementa los principios básicos de WindowManager (WM) que se describen aquí. Estos principios ayudan a garantizar el cumplimiento de los lineamientos de calidad de las apps para automóviles. Estos principios se aplican a lo siguiente:

  • Versiones de Android que usan una arquitectura multiventana, que se inició en Android 14 y continuó en Android 15 con la IU adaptable

  • IU adaptable de Android y tus propias implementaciones personalizadas

Si aplicas los principios, evitarás de forma proactiva la mayoría de los problemas de cumplimiento del CTS y de las pruebas funcionales.

Terminología

invariante
Es una condición lógica que permanece verdadera durante la ejecución de una app que conduce a la integridad estructural. Una invariante actúa como una regla de límite.
actividad especial
También conocida como actividad de la IU de Auto o actividad de la IU del sistema, esta actividad crítica de la app tiene un área dedicada en la pantalla que siempre está visible o que se ve la mayor parte del tiempo, incluso cuando el usuario presiona Inicio,como una navegación principal o una app de clúster.
actividad estándar
Es cualquier actividad estándar de la app que no sea fundamental para la interfaz de usuario principal del sistema, como una app de medios de terceros que se inicia desde la cuadrícula de apps.

Principios de WM

Para maximizar el cumplimiento del CTS, aplica estos principios en tus implementaciones de WM.

Usa una configuración estable en el inicio de la actividad

Inicia cada actividad estándar nueva con una sola transición de WM que establezca su posición, tamaño y densidad finales. No debes activar una segunda transición que cambie la configuración de la ventana de la tarea subyacente (como el tamaño o la densidad) inmediatamente después de la primera, ya que esto provoca un cambio de configuración inmediatamente después de que se crea la actividad.

Mueve las actividades estándar al estado detenido

Cuando el usuario navega a la tarea de inicio o a la escena de inicio, debes mover todas las actividades estándar en ejecución al estado detenido para mantener el ciclo de vida predecible de la app para Android que requieren las pruebas del CTS. Para obtener más información sobre las expectativas del ciclo de vida de las apps en entornos automotrices, consulta Evita el uso mientras las restricciones de la experiencia del usuario estén activas.

Evita que se oscurezca el contenido de la actividad estándar

No dibujes decoraciones personalizadas ni elementos de la IU que obstruyan el contenido de una actividad estándar. Si dibujas superposiciones personalizadas (como una barra de control de clima personalizada), debes informar las dimensiones al sistema con inserciones SystemOverlay. En el caso de Android 15 y versiones posteriores, usa DecorPanel en la IU adaptable. Las apps dependen de estas inserciones para diseñar contenido de forma segura.

Oculta las superposiciones en la solicitud del modo envolvente

Cuando una app solicita el modo envolvente, debes ocultar cualquier elemento de la IU personalizado temporal y quitar sus inserciones SystemOverlay. Las obstrucciones persistentes interfieren con las expectativas de píxeles de una app. Para obtener detalles sobre cómo las apps solicitan y controlan el modo envolvente, consulta Barras del sistema, modo envolvente y renderización de borde a borde.

Aplica esquinas redondeadas solo a nivel de la pantalla

Aplica esquinas redondeadas solo a nivel de la pantalla con las configuraciones de recursos adecuadas en frameworks/base. No apliques esquinas redondeadas arbitrarias a la superficie de una actividad estándar.

Si lo haces, interferirás con las pruebas de elementos de la IU. Como medida temporal, puedes especificar el mismo radio de esquina redondeada para la pantalla que aplicas a la superficie de la actividad estándar.

Mantén el tamaño de la app en la solicitud del modo envolvente

Cuando una app solicita ingresar al modo envolvente, no cambies el tamaño de la ventana de la app. Si lo haces, se activará un cambio de configuración disruptivo. En cambio, para maximizar la app, ofrece un botón de pantalla completa controlado por el usuario.