Liberar um wake lock

Esta página descreve como liberar um wake lock mantido pelo seu app. É importante liberar um wake lock assim que o app terminar de usá-lo para evitar o esgotamento da bateria.

Liberar um wake lock ativo

Para liberar um wake lock ativo, chame o método release() dele. Isso libera sua reivindicação para a CPU.

Por exemplo, o código a seguir adquire um wake lock, faz algum trabalho e libera o wake lock:

Kotlin

@Throws(MyException::class)
fun doSomethingAndRelease() {
    wakeLock.apply {
        try {
            acquire(WAKELOCK_TIMEOUT)
            doTheWork()
        } finally {
            release()
        }
    }
}

Java

void doSomethingAndRelease() throws MyException {
    try {
        wakeLock.acquire(WAKELOCK_TIMEOUT);
        doTheWork();
    } finally {
        wakeLock.release();
    }
}

Libere os wake locks assim que eles não forem mais necessários. Por exemplo, se você usa um wake lock para permitir que uma tarefa em segundo plano seja concluída, libere o bloqueio assim que a tarefa terminar.

Pontos principais sobre esse código

  • Neste exemplo, o método doTheWork() pode gerar uma exceção. Por isso, o código libera o wake lock no bloco finally para garantir que ele seja liberado, mesmo que uma exceção seja gerada. É muito importante garantir que todos os bloqueios de despertar definidos sejam liberados. Portanto, verifique todos os caminhos de código possíveis para garantir que o bloqueio de despertar não seja deixado ativo em nenhum deles.

  • O ideal é adquirir o bloqueio de despertar com WakeLock.acquire(long timeout), que libera automaticamente o bloqueio de despertar após o período de tempo limite especificado. No entanto, libere o wake lock explicitamente quando não precisar mais dele para não mantê-lo por mais tempo do que o necessário.

Veja também