Gerenciamento de energia da plataforma com Doze

Para melhorar a vida útil da bateria do dispositivo, o Android pode afetar o estado do dispositivo monitorando o uso e o estado de vigília do dispositivo. A plataforma pode entrar em estado de suspensão para interromper a execução de atividades enquanto o dispositivo não estiver em uso.

Sobre Doze

O Doze prolonga a vida útil da bateria adiando a atividade da CPU e da rede em segundo plano do aplicativo quando um dispositivo não é usado por longos períodos.

Dispositivos ociosos no Doze entram periodicamente em uma janela de manutenção, durante a qual os aplicativos podem concluir trabalhos pendentes (sincronizações, trabalhos, etc.). O Doze então retoma o sono por um longo período de tempo, seguido por outra janela de manutenção. A plataforma continua a sequência de sono/manutenção Doze, aumentando a duração do tempo de inatividade a cada vez, até atingir um máximo de algumas horas de sono. Em todos os momentos, um dispositivo no Soneca permanece ciente do movimento e sai imediatamente do Soneca se o movimento for detectado.

O Android 7.0 e superior estende o Soneca para acionar um conjunto mais leve de otimizações sempre que um usuário desliga a tela do dispositivo, mesmo quando o usuário continua se movimentando, permitindo maior duração da bateria.

Os serviços críticos do sistema geralmente são configurados pelos fabricantes de dispositivos para serem isentos do Soneca. Os usuários também podem isentar aplicativos específicos do Doze usando o menu Configurações. No entanto, isentar aplicativos pode causar esgotamento da bateria do dispositivo. Por padrão, o Doze está desabilitado no AOSP; para obter detalhes sobre como ativar o Doze, consulte Integrando o Doze .

Requisitos para cochilar

O suporte ao Doze requer que o dispositivo tenha um serviço de mensagens em nuvem, como Firebase Cloud Messaging (FCM) . Eventos de gatilho externos, como mensagens na nuvem, podem ativar temporariamente os aplicativos para funcionarem enquanto o dispositivo permanece no modo Soneca.

O suporte Full Doze também requer um detector de movimento significativo (SMD) no dispositivo; no entanto, o modo Doze leve no Android 7.0 e superior não requer um SMD. Se o Soneca estiver ativado em um dispositivo que:

  • Tem um SMD, ocorrem otimizações completas do Doze (inclui otimizações leves).
  • Não possui SMD, apenas ocorrem otimizações leves do Doze.

Ciclo de vida do cochilo

O Doze começa quando a plataforma detecta que o dispositivo está ocioso e termina quando ocorrem uma ou mais atividades de critérios de saída.

A plataforma detecta que um dispositivo está ocioso quando:

  • O dispositivo está parado (usando SMD).
  • A tela do dispositivo fica desligada por algum tempo.

O modo Soneca não é ativado enquanto um dispositivo alimentado por bateria está conectado a um carregador elétrico.

Durante o cochilo

A plataforma tenta manter o sistema em estado de suspensão, retomando periodicamente as operações normais durante uma janela de manutenção e, em seguida, retornando o dispositivo ao modo de suspensão por períodos repetidos mais longos. Durante o sono, as seguintes restrições estão ativas:

  • Os aplicativos não têm acesso à rede.
  • Wakelocks de aplicativos ignorados.
  • Os alarmes são adiados. Exclui alarmes de despertador e alarmes definidos usando setAndAllowWhileIdle() (limitado a 1 a cada 15 minutos por aplicativo enquanto estiver no Soneca). Esta isenção destina-se a aplicações (como o Calendário) que devem mostrar notificações de lembretes de eventos.
  • As verificações de Wi-Fi não são executadas.
  • As sincronizações SyncAdapter e os trabalhos JobScheduler são adiados até a próxima janela de manutenção.
  • Os aplicativos que recebem mensagens SMS e MMS são colocados em uma lista de permissões temporária para que possam concluir seu processamento.

Saída

A plataforma sai do dispositivo do Doze quando detecta:

  • Interação do usuário com o dispositivo
  • Movimento do dispositivo
  • A tela do dispositivo é ativada
  • Alarme iminente AlarmClock

As notificações não fazem com que o dispositivo saia do Soneca.

O Android 7.0 e superior amplia o modo Soneca, ativando um modo de suspensão leve durante a tela desligada, antes que o dispositivo fique ocioso.

Figura 1. Modos de soneca para dispositivos estacionários e não estacionários.

Ação Cochilar Soneca leve
Acionar Tela desligada, com bateria, parado Tela desligada, com bateria (desconectada)
Tempo Períodos sucessivamente crescentes com manutenção Períodos repetidos de N minutos com janelas de manutenção
Restrições Sem acesso à rede, wake lock ou varredura de GPS/Wi-Fi; alarmes e trabalhos/sincronizações adiados Sem acesso à rede; trabalhos/sincronizações adiadas, exceto durante janelas de manutenção
Comportamento Somente mensagens de notificação push de alta prioridade recebidas Todas as mensagens em tempo real (mensagens instantâneas, chamadas, etc.) recebidas; mensagem de notificação push de alta prioridade permite acesso temporário à rede
Saída Alarme de movimento, tela ligada ou despertador Tela ligada

Interação com o aplicativo em espera

  • O tempo gasto em Soneca não conta para o App Standby.
  • Enquanto o dispositivo estiver no modo Soneca, os aplicativos ociosos poderão realizar operações normais pelo menos uma vez por dia.

Integrar Soneca

Quando o Soneca está ativado, os dispositivos que suportam SENSOR_TYPE_SIGNIFICANT_MOTION realizam otimizações completas do Soneca (incluindo otimizações leves); dispositivos sem SMD executam apenas otimizações leves do Doze. O Android seleciona automaticamente as otimizações apropriadas do Doze e a configuração do fornecedor não é necessária.

Para ativar o Soneca para um dispositivo:

  1. Confirme se o dispositivo possui um serviço de mensagens em nuvem instalado.
  2. No arquivo de configuração de sobreposição de dispositivo overlay/frameworks/base/core/res/res/values/config.xml , defina config_enableAutoPowerModes como true :
    <bool name="config_enableAutoPowerModes">true</bool>
    
    No AOSP, esse parâmetro é definido como false (Doze desabilitado) por padrão.
  3. Confirme se os aplicativos e serviços pré-carregados:
  4. Confirme se os serviços necessários estão isentos do Doze.

Pontas

Teste e otimize aplicativos

Teste todos os aplicativos (especialmente aplicativos pré-carregados) no modo Soneca. Para obter detalhes, consulte Teste com Doze e App Standby .