Rilasciare un wakelock
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa pagina descrive come rilasciare un wake lock mantenuto dalla tua app.
È importante rilasciare un wake lock non appena la tua app
ha finito di utilizzarlo per evitare di scaricare la batteria.
Rilasciare un wakelock attivo
Per rilasciare un wake lock attivo, chiama il metodo release()
. In questo modo
la richiesta viene rilasciata alla CPU.
Ad esempio, il seguente codice acquisisce un wake lock,
esegue alcune operazioni e poi rilascia il wake lock:
Kotlin
@Throws(MyException::class)
fun doSomethingAndRelease() {
wakeLock.apply {
try {
acquire()
doTheWork()
} finally {
release()
}
}
}
Java
void doSomethingAndRelease() throws MyException {
try {
wakeLock.acquire();
doTheWork();
} finally {
wakeLock.release();
}
}
Assicurati di rilasciare i wake lock non appena non sono più necessari. Ad esempio, se utilizzi un wakelock per consentire il completamento di un'attività in background, assicurati di rilasciarlo non appena l'attività termina.
Punti chiave di questo codice
In questo esempio, il metodo doTheWork()
potrebbe generare un'eccezione. Per questo motivo, il codice rilascia il wake lock nel blocco finally
, per assicurarsi che venga rilasciato indipendentemente dal fatto che venga generata o meno un'eccezione. È molto
importante assicurarsi che ogni wake lock impostato venga rilasciato, quindi devi
controllare ogni possibile percorso del codice per assicurarti che il wake lock non rimanga attivo
in nessuno di questi.
Vedi anche
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-08-24 UTC.
[null,null,["Ultimo aggiornamento 2025-08-24 UTC."],[],[],null,["# Release a wake lock\n\nThis page describes how to release a wake lock held by your app.\nIt's important to release a wake lock as soon as your app is\nfinished using it to avoid draining the battery.\n\nRelease an active wake lock\n---------------------------\n\nTo release an active wake lock, call its [`release()`](/reference/android/os/PowerManager.WakeLock#release()) method. Doing so\nreleases your claim to the CPU.\n\nFor example, the following code [acquires a wake lock](/develop/background-work/background-tasks/awake/wakelock/set),\ndoes some work, then releases the wake lock:\n\n\n### Kotlin\n\n```kotlin\n@Throws(MyException::class)\nfun doSomethingAndRelease() {\n wakeLock.apply {\n try {\n acquire()\n doTheWork()\n } finally {\n release()\n }\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsKotlin.kt#L42-L52\n```\n\n### Java\n\n```java\nvoid doSomethingAndRelease() throws MyException {\n try {\n wakeLock.acquire();\n doTheWork();\n } finally {\n wakeLock.release();\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsJava.java#L27-L34\n```\n\n\u003cbr /\u003e\n\nMake sure to release wake locks as soon as they are no longer needed. For\nexample, if you use a wake lock to allow a background task to finish, make sure\nto release the lock as soon as the task finishes.\n\n### Key points about this code\n\nIn this example, the method `doTheWork()` might throw an exception. For this\nreason, the code releases the wake lock in the `finally` block, to make sure\nthe wake lock is released whether or not an exception is thrown. It's very\nimportant to make sure every wake lock you set is released, so you need to\ncheck every possible code path to make sure the wake lock isn't left active\non any of them.\n\nSee also\n--------\n\n- [Set a wake lock](/develop/background-work/background-tasks/awake/wakelock/set)"]]