O Android 13 introduz as medidas de preservação de bateria abaixo:
- Regras atualizadas sobre quando o sistema coloca o app no bucket "restrito" para apps em espera.
- Novas limitações para o trabalho que pode ser realizado quando o usuário coloca o app em estado restrito para reduzir o uso da bateria em segundo plano.
- Novas notificações do sistema que alertam os usuários sobre o uso excessivo da bateria em segundo plano e serviços em primeiro plano de longa duração.
Atualizações relacionadas ao momento em que o app entra no bucket "restrito" para apps em espera
A menos que classificado como isento, o sistema vai colocar o app no bucket restrito quando ele apresentar um destes comportamentos:
O usuário não interagiu com o app por oito dias. Se o usuário interagir com outro app que está vinculado a um serviço do seu app, o sistema vai considerar que seu app foi usado.
O app invoca um número excessivo de transmissões ou vinculações em um período de 24 horas.
O app consome uma quantidade considerável de bateria do dispositivo em um período de 24 horas. Esse limite pode ser diferente em dispositivos com pouca memória RAM.
Ao medir o impacto do consumo do app sobre a duração da bateria de um dispositivo, o sistema considera o trabalho que o app realiza em várias áreas diferentes, incluindo:
- Jobs, incluindo jobs priorizados
- Broadcast receivers
- Serviços em segundo plano
- Se o sistema armazenou o processo do app em cache.
A interação do usuário permite que o app saia do bucket "restrito"
Quando ocorre uma interação do usuário, o sistema remove o app do bucket restrito e o coloca em outro bucket para apps em espera. Essas interações incluem:
O usuário tocou em uma notificação enviada pelo app.
O usuário executou uma ação em um widget que pertence ao app.
O usuário afetou um serviço em primeiro plano no app ao pressionar um botão de mídia.
O usuário se conectou ao app ao interagir com o Android Automotive OS, em que o app usa um serviço em primeiro plano ou
CONNECTION_TYPE_PROJECTION
.O app fica visível no modo picture-in-picture (PiP).
O app está entre os apps ativos na tela. Esse comportamento se aplica principalmente a dispositivos de tela grande.
Novas limitações de uso da bateria em segundo plano por apps em estado restrito
As versões já existentes do Android oferecem aos usuários a opção de ajustar a quantidade de trabalho que os apps podem realizar quando executados em segundo plano. As opções abaixo são mostradas na página Uso da bateria nas configurações do sistema:
- Sem restrições: permite trabalho em segundo plano, podendo consumir mais bateria.
- Otimizado (padrão): otimiza a capacidade do app de executar trabalhos em segundo plano de acordo com as interações do usuário.
- Restrito: prioriza a duração da bateria do dispositivo em relação à versatilidade do app. Essa opção impõe mais limitações sobre os trabalhos que o app pode realizar em segundo plano.
A partir do Android 9 (nível 28 da API), apps colocados no estado restrito têm estas limitações:
- Não é possível iniciar serviços em primeiro plano
- Serviços em primeiro plano existentes são removidos
- Alarmes não são acionados
- Jobs não são executados
Em apps destinados ao Android 13, o sistema não envia nenhuma das transmissões abaixo até que o app seja iniciado por outros motivos:
BOOT_COMPLETED
LOCKED_BOOT_COMPLETED
Notificação do sistema sobre uso excessivo da bateria em segundo plano
O Android 13 introduz uma notificação do sistema exibida quando o app consome uma grande quantidade de bateria do dispositivo durante um período de 24 horas. Essa nova notificação aparece para todos os apps em dispositivos com o Android 13, independente da versão do SDK de destino.
Ao medir o impacto do consumo do app sobre a duração da bateria de um dispositivo, o sistema considera o trabalho que o app realiza em várias áreas diferentes, incluindo:
- Serviços em primeiro plano, incluindo serviços que têm notificações visíveis
- Tarefas de trabalho, incluindo trabalhos priorizados
- Broadcast receivers
- Serviços em segundo plano
- O cache do app
Se essa notificação for exibida para o app, ela não vai aparecer novamente no mesmo dispositivo por pelo menos 24 horas.
Notificação do sistema sobre serviços em primeiro plano de longa duração
Se o sistema detectar que o app executa um serviço em primeiro plano por um longo período (pelo menos 20 horas em um intervalo de 24 horas), ele vai enviar uma notificação ao usuário, exibindo a opção de abrir o gerenciador de tarefas dos serviços em primeiro plano (FGS). A notificação contém este texto:
APP is running in the background for a long time. Tap to review.
O sistema não vai exibir essa notificação caso o tipo de serviço em primeiro plano seja
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
ou
FOREGROUND_SERVICE_TYPE_LOCATION
.
Além disso, se o app executar um serviço em primeiro plano do tipo
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
ou FOREGROUND_SERVICE_TYPE_LOCATION
por mais de quatro horas em um período de 24 horas, o sistema não vai enviar
notificações de longa duração com relação a nenhum serviço em primeiro plano iniciado pelo app.
Isenções
As situações abaixo isentam os apps de todas as medidas de preservação de bateria introduzidas no Android 13:
- Apps do sistema e apps vinculados ao sistema
- Apps complementares de dispositivos
- Apps executados em um dispositivo no modo de demonstração
- Apps do proprietário do dispositivo
- Apps do proprietário do perfil
- Apps persistentes
- Apps de VPN
- Apps que têm o papel
ROLE_DIALER
- Apps que o usuário designou explicitamente como "sem restrições" nas configurações do sistema
As situações abaixo isentam o app de entrar no bucket "restrito" para apps em espera e permitem que ele não seja monitorado pelo acionador de inatividade por oito dias:
- Ter widgets ativos
- Receber pelo menos uma destas permissões:
As situações abaixo isentam o app da maioria das medidas de preservação de bateria introduzidas no Android 13, mas não impedem que o sistema envie uma notificação sobre serviços em primeiro plano de longa duração:
- Ter uma
MediaSession
ativa em andamento - Ter a
permissão
ACCESS_FINE_LOCATION
Teste
As seções abaixo apresentam algumas maneiras de testar como as medidas de preservação da bateria introduzidas no Android 13 afetam o app.
Impedir o uso em segundo plano
Para impedir que o app possa ser executado em segundo plano, execute o comando abaixo em uma janela de terminal:
adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND deny
Colocar o app em um bucket restrito
Para forçar o sistema a colocar o app no bucket restrito, execute o comando abaixo em uma janela de terminal:
adb shell am set-standby-bucket PACKAGE_NAME restricted