Para melhorar a vida útil da bateria do dispositivo, o Android pode afetar o estado do dispositivo monitorando o uso e a vigília do dispositivo. A plataforma pode entrar em um estado de suspensão para interromper a execução das atividades enquanto o dispositivo não é usado.
Cochilar
O Doze estende a vida útil da bateria adiando a atividade de rede e CPU em segundo plano do aplicativo quando um dispositivo não é usado por longos períodos.
Dispositivos inativos no Doze entram periodicamente em uma janela de manutenção, durante a qual os aplicativos podem concluir o trabalho pendente (sincronizações, trabalhos etc.). A soneca retoma a suspensão por um período mais longo, seguido por outra janela de manutenção. A plataforma continua a sequência de sono/manutenção Doze, aumentando a duração da inatividade a cada vez, até que um máximo de algumas horas de sono seja alcançado. Em todos os momentos, um dispositivo em Doze permanece ciente do movimento e sai imediatamente do Doze se o movimento for detectado.
O Android 7.0 e superior estende o Doze 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 a se movimentar, 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 Doze. Os usuários também podem isentar aplicativos específicos do Doze usando o menu Configurações. No entanto, aplicativos isentos podem causar consumo de bateria no dispositivo. Por padrão, o Doze está desabilitado no AOSP; para obter detalhes sobre como habilitar o Doze, consulte Integrando o Doze .
Requisitos de soneca
O suporte ao Doze requer que o dispositivo tenha um serviço de mensagens na nuvem, como Firebase Cloud Messaging (FCM) . Eventos acionadores externos, como mensagens na nuvem, podem ativar temporariamente os aplicativos para que funcionem 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 Doze estiver ativado em um dispositivo que:
- Tem um SMD, ocorrem otimizações completas do Doze (inclui otimizações leves).
- Não possui um SMD, apenas as otimizações leves do Doze ocorrem.
Doze ciclo de vida
O Doze começa quando a plataforma detecta que o dispositivo está ocioso e termina quando uma ou mais atividades de critérios de saída ocorrem.
Detecção
A plataforma detecta que um dispositivo está ocioso quando:
- O dispositivo está parado (usando SMD).
- A tela do dispositivo está desativada por algum tempo.
O modo Doze não é ativado enquanto um dispositivo alimentado por bateria está conectado a um carregador de energia.
Durante a soneca
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 para suspensão por períodos repetidos mais longos. Durante o sono, as seguintes restrições estão ativas:
- Os aplicativos não têm permissão de acesso à rede.
- Wakelocks do aplicativo ignorados.
- Os alarmes são adiados. Exclui alarmes de despertador e alarmes definidos usando
setAndAllowWhileIdle()
(limitado a 1 a cada 15 minutos por aplicativo no modo Soneca). Esta isenção destina-se a aplicativos (como o Agenda) que devem mostrar notificações de lembretes de eventos. - As verificações de Wi-Fi não são executadas.
-
SyncAdapter
sincroniza e os trabalhos doJobScheduler
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 iminenteClock alarm
As notificações não fazem com que o dispositivo saia do modo Soneca.
O Android 7.0 e superior estende o Doze, ativando um modo de suspensão leve durante a tela desligada, antes que o dispositivo fique ocioso.
Ação | Cochilar | Cochilo Leve |
---|---|---|
Acionar | Tela desligada, na bateria, estacionária | Tela desligada, na bateria (desconectado) |
Cronometragem | 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 GPS/Wi-Fi; alarmes e trabalhos/sincronizações adiados | Sem acesso à rede; trabalhos/sincronizações adiadas, exceto durante as 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 por push de alta prioridade permite acesso temporário à rede |
Saída | Movimento, tela ligada ou alarme de despertador | Tela ligada |
Interação com App em espera
- O tempo gasto no Doze não conta para o App Standby.
- Enquanto o dispositivo está no modo Soneca, os aplicativos inativos podem realizar operações normais pelo menos uma vez por dia.
Integrando Doze
Quando o Doze está ativado, os dispositivos que suportam SENSOR_TYPE_SIGNIFICANT_MOTION
executam otimizações completas do Doze (incluindo otimizações leves); dispositivos sem um SMD executam apenas otimizações Doze leves. O Android seleciona automaticamente as otimizações do Doze apropriadas e a configuração do fornecedor não é necessária.
Para habilitar o Doze para um dispositivo:
- Confirme se o dispositivo possui um serviço de mensagens em nuvem instalado.
- No arquivo de configuração de sobreposição de dispositivo overlay
overlay/frameworks/base/core/res/res/values/config.xml
, definaconfig_enableAutoPowerModes
comotrue
:<bool name="config_enableAutoPowerModes">true</bool>
No AOSP, este parâmetro é definido comofalse
(Doze disabled) por padrão. - Confirme se os aplicativos e serviços pré-carregados:
- Use as diretrizes de otimização de economia de energia . Para obter detalhes, consulte Testar e otimizar aplicativos .
OU
- Estão isentos de Doze e App Standby. Para obter detalhes, consulte Isenção de aplicativos .
- Use as diretrizes de otimização de economia de energia . Para obter detalhes, consulte Testar e otimizar aplicativos .
- Confirme se os serviços necessários estão isentos do Doze.
Pontas
- Se possível, use o FCM para mensagens downstream .
- Se seus usuários precisarem ver uma notificação imediatamente, use uma mensagem de alta prioridade do FCM .
- Forneça informações suficientes dentro da carga útil da mensagem inicial (para evitar acessos subsequentes desnecessários à rede).
- Defina alarmes críticos com
setAndAllowWhileIdle()
esetExactAndAllowWhileIdle()
.
Testar e otimizar aplicativos
Teste todos os aplicativos (especialmente aplicativos pré-carregados) no modo Soneca. Para obter detalhes, consulte Testar com Soneca e App Standby .