Definir e gerenciar wake locks

Se você precisar manter um dispositivo em execução para concluir algum trabalho antes que ele entre no estado de suspensão, use um recurso de serviço do sistema PowerManager chamado wake locks. Os wake locks permitem que o app controle o estado de energia do dispositivo.

Definir um bloqueio de ativação

Para usar um wake lock, a primeira etapa é adicionar a permissão WAKE_LOCK ao arquivo de manifesto do seu app:

<uses-permission android:name="android.permission.WAKE_LOCK" />

Se o app inclui um broadcast receiver que usa um serviço para fazer algum trabalho, veja como definir um wake lock diretamente:

Kotlin

val wakeLock: PowerManager.WakeLock =
        (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
            newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                acquire()
            }
        }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyApp::MyWakelockTag");
wakeLock.acquire();

Liberar um wake lock

Para liberar o wake lock, chame wakelock.release(). Isso libera sua reivindicação para a CPU. É importante liberar um wake lock assim que o app terminar de usá-lo para evitar o esgotamento da bateria.

Veja também