Melhorar a performance do mostrador do relógio com a aceleração de hardware

Os apps para Wear OS que usam visualizações padrão se beneficiam da renderização gráfica automática acelerada por hardware. No entanto, os mostradores de relógio geralmente são implementados usando telas e, por isso, não incluem a aceleração de hardware automaticamente.

Por que usar uma tela acelerada por hardware no mostrador do relógio?

Na maioria dos casos, o mostrador do relógio é renderizado com um frame rate maior quando usa uma tela acelerada por hardware. Nesse tipo de frame rate, as animações e transições ficam mais harmoniosas, proporcionando uma experiência do usuário melhor.

Com as telas aceleradas por hardware, também é possível acessar mais dados de desempenho da interface relacionados ao mostrador do relógio. Por exemplo, só é possível acessar as informações detalhadas sobre os frames descritas em Medir o desempenho da interface quando o mostrador do relógio usa uma tela acelerada por hardware.

Meu mostrador do relógio já usa a aceleração de hardware?

Você pode conferir se o mostrador do relógio já implementa a aceleração de hardware usando as opções do desenvolvedor ou o adb.

Verificar usando as opções do desenvolvedor

Para usar as opções do desenvolvedor para conferir se o mostrador do relógio já implementa a aceleração de hardware, siga estas etapas:

  1. Em um dispositivo Wear OS, acesse Configurações > Opções do desenvolvedor.
  2. Ative a opção Depurar criação de perfil da GPU.

    Essa opção desenha uma sobreposição para cada plataforma visível para mostrar o tempo gasto em cada etapa da renderização da GPU de cada plataforma.

  3. No dispositivo, volte ao mostrador do relógio.

  4. Se o mostrador do relógio usa uma tela acelerada por hardware, uma nova barra se move da direita para a esquerda para cada frame renderizado do mostrador do relógio.

Verificar usando o adb

Para conferir se o mostrador do relógio implementa a aceleração de hardware usando o adb, siga estas etapas:

  1. Em um dispositivo Wear OS, abra o mostrador do relógio que você quer testar.
  2. Deixe o mostrador do relógio funcionar por alguns segundos no modo interativo.
  3. Execute o seguinte comando adb para verificar se ele está usando a aceleração de hardware:

    adb shell dumpsys gfxinfo [package-name]

Depois de executar o comando, você verá uma saída parecida com o exemplo a seguir:

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

Observe a linha Total frames rendered no exemplo de saída. Em geral, se a saída mostrar um total de frames renderizados maior que 0, isso significará que o mostrador do relógio usa uma tela acelerada. Caso contrário, o total de frames renderizados e os outros dados de frames no relatório normalmente serão 0.

No entanto, como a gfxinfo é gerada para o pacote do app como um todo, é possível que você veja algumas informações de tempo para renderização de frame relacionadas a outros elementos, e não à tela acelerada por hardware, como uma Activity usada pelo app para uma tela de configuração. Para conseguir diferenciar as informações, confira se o mostrador do relógio é a única superfície visível, execute novamente o comando adb shell dumpsys gfxinfo novamente e observe se o valor de Total frames rendered aumenta.

Práticas recomendadas

Siga estas práticas recomendadas para garantir a melhor experiência possível para seus usuários.

Prolongar a duração da bateria

Caso o mostrador do relógio tenha animações de longa duração, o uso da aceleração de hardware pode diminuir consideravelmente a duração da bateria do dispositivo. Esse problema pode piorar se o mostrador do relógio tentar desenhar em cada frame. Para evitar um impacto negativo para os usuários, não use animações de longa duração no mostrador do relógio. Essa orientação não se aplica apenas ao uso da aceleração de hardware, mas, considerando que esse uso aumenta a quantidade de frames que podem ser desenhados, ela é ainda mais importante nesse caso. Para mais informações, consulte Práticas recomendadas para animações.

Usar operações de desenho aceitas

Algumas operações de desenho não são aceitas quando a aceleração de hardware é usada. Para ter mais informações sobre o que é aceito, consulte Aceleração de hardware. No caso de um caminho de código pequeno que usa uma operação não aceita, é possível criar uma tela com bitmaps e desenhar esse bitmap na tela do mostrador do relógio com canvas.drawBitmap().

Manter compatibilidade ao usar aceleração de hardware

A aceleração de hardware está disponível em dispositivos Wear OS com o Android 9 (API de nível 28) ou versões mais recentes. Para evitar o uso de uma operação de desenho específica em dispositivos mais antigos, que não incluem a aceleração de hardware, ou de uma operação de desenho não aceita em uma tela acelerada por hardware, consulte Canvas.isHardwareAccelerated() e forneça um recurso alternativo.