Maximizar a compliance de teste com invariantes do WindowManager

Para implementar uma experiência do usuário consistente e de alta qualidade e evitar problemas que levam a falhas no Conjunto de teste de compatibilidade (CTS), implemente os princípios principais do WindowManager (WM) descritos aqui. Esses princípios se aplicam a:

  • Versões do Android que usam uma arquitetura de várias janelas, iniciada no Android 14 e continuada no Android 15 com a interface escalonável.

  • Interface escalonável do Android e suas próprias implementações personalizadas

Ao aplicar os princípios, você evita proativamente a maioria dos problemas de conformidade com o CTS e de testes funcionais.

Terminologia

invariante
Uma condição lógica que permanece verdadeira durante toda a execução de um app que leva à integridade estrutural. Uma invariante atua como uma regra de limite.
atividade especial
Também conhecida como atividade de IU automática ou atividade de interface do sistema, essa atividade crítica do app tem uma área dedicada na tela que está sempre visível ou visível na maior parte do tempo, mesmo quando o usuário pressiona Início,como um app de navegação principal ou de cluster.
atividade padrão
Qualquer atividade padrão do app que não seja essencial para a interface principal do sistema, como um app de mídia de terceiros iniciado na grade de apps.

Princípios de WM

Para maximizar a conformidade com o CTS, aplique estes princípios nas implementações do WM.

Usar uma configuração estável na inicialização da atividade

Inicie cada nova atividade padrão com uma única transição do WM que define a posição, o tamanho e a densidade finais dela. Não acione uma segunda transição que mude a configuração da janela da tarefa subjacente (como tamanho ou densidade) imediatamente após a primeira, porque isso causa uma mudança de configuração imediatamente após a criação da atividade.

Mover atividades padrão para o estado parado

Quando o usuário navega até a tarefa ou cena inicial, é preciso mover todas as atividades padrão em execução para o estado interrompido para manter o ciclo de vida previsível do app Android exigido pelos testes do CTS.

Impedir o encobrimento do conteúdo de atividade padrão

Não desenhe decorações personalizadas ou elementos da interface que obstruam o conteúdo de uma atividade padrão. Se você desenhar overlays personalizados (como uma barra de controle de clima personalizada), informe as dimensões ao sistema com encartes SystemOverlay. No Android 15 e versões mais recentes, use DecorPanel na interface escalonável.

Ocultar sobreposições na solicitação do modo imersivo

Quando um app solicita o modo imersivo, é necessário ocultar todos os elementos temporários da interface personalizada e remover os encartes SystemOverlay. Obstruções persistentes interferem nas expectativas de pixels de um app.

Aplicar cantos arredondados apenas no nível da tela

Aplique cantos arredondados apenas no nível da tela usando as configurações de recursos adequadas em frameworks/base. Não aplique cantos arredondados arbitrários à superfície de uma atividade padrão.

Isso interfere nos testes de elementos da interface. Como uma medida temporária, você pode especificar o mesmo raio de canto arredondado para a tela que aplica à superfície da atividade padrão.

Manter o tamanho do app na solicitação do modo imersivo

Quando um app solicitar a entrada no modo imersivo, não redimensione a janela dele. Isso aciona uma mudança de configuração disruptiva. Em vez disso, para maximizar o app, ofereça um botão de tela cheia controlado pelo usuário.