Inspecionar o uso de energia com o Energy Profiler

O Energy Profiler ajuda você a descobrir onde seu app usa mais energia do que o necessário.

O Energy Profiler monitora o uso da CPU, rádio de rede e sensor de GPS e exibe uma visualização da quantidade de energia que cada um desses componentes usa. O Energy Profiler também mostra ocorrências de eventos do sistema (wake locks, alarmes, tarefas e solicitações de localização) que podem afetar o consumo de energia.

O Energy Profiler não mede diretamente o consumo de energia. Em vez disso, ele usa um modelo que estima o consumo de energia para cada recurso no dispositivo.

Visão geral do Energy Profiler

O Energy Profiler aparece como uma linha na janela Profiler quando o app é executado em um dispositivo conectado ou em um Android Emulator com o Android 8.0 (API 26) ou versão posterior.

Para abrir o Energy Profiler, siga estas etapas:

  1. Selecione View > Tool Windows > Profiler ou clique em Profile na barra de ferramentas.

    Se você receber uma solicitação da caixa de diálogo Select Deployment Target, escolha o dispositivo em que seu app será implementado para a criação do perfil. Caso tenha conectado um dispositivo por USB, mas ele não esteja aparecendo na lista, verifique se a depuração USB está ativada.

  2. Clique em qualquer lugar da linha do tempo Energy para abrir o Energy Profiler.

Ao ser aberto, o Energy Profiler imediatamente começa a exibir o uso de energia estimado do app. Você verá algo semelhante à Figura 1.

Figura 1. Linhas do tempo no Energy Profiler.

Conforme indicado na Figura 1, a visualização padrão do Energy Profiler inclui as seguintes linhas do tempo:

  1. Linha do tempo de eventos: mostra as atividades no seu app à medida que passam por diferentes estados do ciclo de vida. Essa linha do tempo também indica as interações do usuário com o dispositivo, incluindo eventos de rotação de tela.
  2. Linha do tempo de energia: mostra o consumo de energia estimado do seu app.
  3. Linha do tempo do sistema: indica eventos do sistema que podem afetar o consumo de energia.

Para ver um detalhamento do uso de energia por recursos de CPU, rede e localização (GPS), assim como eventos relevantes do sistema, coloque o ponteiro do mouse sobre uma barra na linha do tempo Energy.

Inspecionar eventos do sistema: wake locks, tarefas e alarmes

Você pode usar o Energy Profiler para encontrar eventos do sistema que podem afetar o consumo de energia, incluindo wake locks, tarefas e alarmes:

  • Um wake lock é um mecanismo para manter a CPU ou a tela ativada em momentos em que o dispositivo entraria no modo de suspensão. Por exemplo, um app que exibe vídeos pode usar um wake lock para manter a tela ligada quando não houver interação do usuário com o dispositivo. Solicitar um wake lock não é uma ação que consome muita energia, mas não encerrar um wake lock pode fazer com que a tela ou CPU permaneça ligada por mais tempo que o necessário, o que pode esgotar a bateria rapidamente. Para ver mais informações, consulte a orientação sobre como trabalhar com wake locks.

  • Você pode usar alarmes para executar tarefas em segundo plano fora do contexto do seu app em intervalos regulares. Quando um alarme dispara, ele pode ativar o dispositivo e executar um código que consome muita energia. Para ver mais informações, consulte a orientação sobre como trabalhar com alarmes.

  • Você pode usar tarefas para executar ações em condições específicas, como quando a rede fica disponível. Tarefas são criadas com o JobBuilder e programadas com o JobScheduler. Em muitos casos, a abordagem recomendada é executar tarefas com JobScheduler, e não com alarmes ou wake locks.

  • As solicitações de localização usam o sensor GPS, que pode consumir bastante energia. Para ver informações sobre como fazer solicitações de localização com economia de energia, consulte Otimizar localização para a bateria.

O Energy Profiler facilita o processo de descobrir onde seu app usa cada um desses recursos para que você possa tomar decisões conscientes sobre como cada um é utilizado.

O Energy Profiler mostra uma barra codificada por cores na linha do tempo System, abaixo da linha do tempo Energy, para o intervalo de tempo em que um evento do sistema está ativo. Os wake locks são representados por uma barra vermelha, as tarefas e os alarmes são indicados por uma barra amarela, e os eventos de localização são indicados por uma barra roxa-clara.

A Figura 2 mostra o Energy Profiler e o editor de códigos abertos para o código-fonte responsável por um wake lock não lançado.

Figura 2. Uso do Energy Profiler para encontrar um wake lock.

  1. Para abrir o painel System Event e mostrar detalhes de eventos, como wake locks, selecione um intervalo na linha do tempo Energy.
  2. Para abrir o painel Wake Lock Details e exibir as informações de um wake lock específico, selecione o wake lock no painel System Event.
  3. Para abrir o editor de código e ir para o código-fonte de um wake lock, clique duas vezes na entrada do método de chamada na parte superior da pilha de chamadas no painel Wake Lock Details.
  4. A chamada para adquirir o wake lock fica destacada no editor da fonte.

As instruções para exibir detalhes de outros eventos do sistema são basicamente as mesmas dos wake locks, com informações específicas para cada tipo de evento no seu painel de detalhes. Por exemplo, o painel Job Details mostra pilhas de chamadas para as partes do código em que a tarefa está programada e em que ela foi concluída.