En esta página, se describe cómo retirar un bloqueo de activación que mantiene tu app. Es importante retirar un bloqueo de activación tan pronto como la app termine de usarlo para evitar que se agote la batería.
Cómo liberar un bloqueo de activación activo
Para liberar un bloqueo de activación activo, llama a su método release()
. De esta manera, se retira tu solicitud de uso de la CPU.
Por ejemplo, el siguiente código adquiere un bloqueo de activación, realiza algún trabajo y, luego, libera el bloqueo de activación:
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(); } }
Asegúrate de liberar los bloqueos de activación cuando ya no se necesiten. Por ejemplo, si utilizas un bloqueo de activación para permitir que finalice una tarea en segundo plano, asegúrate de liberar el bloqueo en cuanto finalice la tarea.
Puntos clave sobre este código
En este ejemplo, el método
doTheWork()
podría generar una excepción. Por este motivo, el código libera el bloqueo de activación en el bloquefinally
para asegurarse de que se libere el bloqueo de activación, independientemente de si se arroja una excepción o no. Es muy importante asegurarse de que se libere cada bloqueo de activación que establezcas, por lo que debes verificar cada ruta de código posible para asegurarte de que el bloqueo de activación no quede activo en ninguna de ellas.Lo mejor es adquirir el bloqueo de activación con
WakeLock.acquire(long timeout)
, que libera automáticamente el bloqueo de activación después del período de tiempo de espera especificado. Sin embargo, debes liberar el bloqueo de activación de forma explícita cuando ya no lo necesites, para no mantenerlo durante más tiempo del necesario.