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

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Os apps para Wear OS que usam visualizações padrão já aproveitam os benefícios da renderização gráfica acelerada por hardware. Por outro lado, 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. As animações e transições ficam mais harmoniosas em frames rates altas, de modo que os benefícios ficam claros para o usuário.

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

Solicitar aceleração de hardware para o mostrador do relógio

Crie um CanvasRenderer e defina o canvasType como CanvasType.HARDWARE para solicitar a aceleração de hardware para o mostrador do relógio.

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 conferir se o mostrador do relógio usa a aceleração de hardware com as opções do desenvolvedor, 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 estiver usando a tela acelerada por hardware, uma barra será exibida para cada frame renderizado, deslizando da direita para a esquerda.

Verificar usando o adb

Para conferir se o mostrador do relógio está usando a aceleração de hardware com 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. Geralmente, se esses dados de frame forem exibidos na saída, isso indica que o mostrador do relógio está usando uma tela acelerada. Caso contrário, o número de Total frames rendered e os demais números de dados de frame no relatório costumam ser iguais a zero.

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 ver mais informações, consulte Práticas recomendadas para animações.

Usar operações de desenho compatíveis

Algumas operações de desenho não são compatíveis com a aceleração de hardware. No caso de um caminho de código pequeno que usa uma operação não compatível, é 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 compatível em uma tela acelerada por hardware, consulte Canvas.isHardwareAccelerated() e forneça um recurso alternativo.