Wakelock parziali bloccati
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
I blocchi di risveglio parziali sono un meccanismo nell'API
PowerManager
che consente agli sviluppatori di mantenere in esecuzione la CPU dopo lo spegnimento del display di un dispositivo
(a causa del timeout del sistema o della pressione del tasto di accensione da parte dell'utente). L'app acquisisce un blocco sveglia parziale chiamando acquire()
con il flag PARTIAL_WAKE_LOCK
o utilizzando altre API che acquisiscono blocchi sveglia.
Un blocco parziale del risveglio diventa bloccato se viene mantenuto per molto tempo mentre la tua app è in esecuzione in background (nessuna parte dell'app è visibile all'utente). Questa condizione scarica la batteria del dispositivo perché impedisce al dispositivo di entrare in stati di alimentazione inferiori. I blocchi di risveglio parziali devono essere utilizzati solo quando necessario e rilasciati non appena non sono più necessari.
Se la tua app ha un blocco parziale della riattivazione bloccato, puoi utilizzare le indicazioni riportate in questa pagina per diagnosticare e risolvere il problema.
Rilevare il problema
Potresti non sapere sempre che i wakelock parziali della tua app sono bloccati.
Se hai già pubblicato la tua app, Android vitals può aiutarti a rilevare il problema.
Android vitals
Android vitals può aiutarti a migliorare le prestazioni della tua app inviandoti un avviso tramite Play Console quando la tua app presenta blocchi parziali del risveglio bloccati. Android vitals segnala i wakelock parziali come bloccati quando si verificano almeno un wakelock parziale di un'ora in background in un periodo di 24 ore.
Il numero di sessioni della batteria visualizzato è aggregato per tutti gli utenti misurati
dell'app. Per informazioni su come Google Play raccoglie i dati di Android vitals, consulta la
documentazione di
Play Console.
Una volta che sai che la tua app ha blocchi parziali di riattivazione bloccati,
il passaggio successivo è risolvere il problema.
Risolvi il problema
Poiché i blocchi di attivazione possono scaricare la batteria del dispositivo, non dovresti utilizzarli se esiste un'alternativa. La documentazione su come scegliere l'API giusta per mantenere il dispositivo attivo può aiutarti a trovare la soluzione migliore per la tua app.
Se devi utilizzare un blocco di attivazione, segui le best practice per i blocchi di attivazione per assicurarti che non influiscano negativamente sull'efficienza del dispositivo. In particolare, assicurati che ogni dispositivo acquistato sia sbloccato e rilascia la serratura il più rapidamente possibile.
Dopo aver risolto il problema nel codice, puoi verificare le correzioni utilizzando gli strumenti di debug del blocco di attivazione locale.
Vedi anche
Consigliati per te
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-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Stuck partial wake locks\n\nPartial wake locks are a mechanism in the\n[`PowerManager`](/reference/android/os/PowerManager) API\nthat lets developers keep the CPU running after a device's display turns off\n(whether due to system timeout or the user pressing the power button). Your\napp acquires a partial wake lock by calling\n[`acquire()`](/reference/android/os/PowerManager.WakeLock#acquire())\nwith the\n[`PARTIAL_WAKE_LOCK`](/reference/android/os/PowerManager#PARTIAL_WAKE_LOCK)\nflag, or by using [other APIs that acquire wake locks](/develop/background-work/background-tasks/awake/wakelock/identify-wls).\nA partial wake lock becomes *stuck* if it is held for a long time while\nyour app is running in the\nbackground (no part of your app is visible to the user). This condition drains\nthe device's battery because it prevents the device from entering lower power\nstates. Partial wake locks should be used only when necessary and released as\nsoon as no longer needed.\n\nIf your app has a stuck partial wake lock, you can use the guidance in this page\nto diagnose and fix the problem.\n\nDetect the problem\n------------------\n\nYou may not always know that your app's partial wake locks are stuck.\nIf you have already published your app,\nAndroid vitals can help make you aware of the problem.\n\n### Android vitals\n\nAndroid vitals can help improve your app's performance by alerting you via the\n[Play Console](https://play.google.com/console/) when your app is\nexhibiting stuck partial wake locks. Android vitals reports partial wake locks\nas stuck when at least one, hour-long, while in the background, partial wake\nlock occurs in a 24-hour period.\n\nThe number of battery sessions displayed is an aggregate for all measured users\nof the app. For information on how Google Play collects Android vitals data, see\nthe\n[Play Console](https://support.google.com/googleplay/android-developer/answer/7385505)\ndocumentation.\n\nOnce you're aware that your app has stuck partial wake locks,\nyour next step is to address the issue.\n\nFix the problem\n---------------\n\nBecause wake locks can drain the device battery, you shouldn't use wake\nlocks if there's an alternative. The\n[Choose the right API to keep the device awake](/develop/background-work/background-tasks/awake)\ndocumentation can help you find the best solution for your app.\n\nIf you do need to use a wake lock, [follow wake lock best practices](/develop/background-work/background-tasks/awake/wakelock/best-practices)\nto make sure your wake locks don't hurt device efficiency. In particular,\nmake sure every device you acquire is released, and release the lock as quickly\nas possible.\n\nAfter fixing the problem in code, you can verify your fixes by using [local\nwake lock debugging tools](/develop/background-work/background-tasks/awake/wakelock/debug-locally).\n\nSee also\n--------\n\n- [Excessive partial wake locks (beta)](/topic/performance/vitals/excessive-wakelock)\n- [Wake lock documentation](/develop/background-work/background-tasks/awake/wakelock)\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Frozen frames](/topic/performance/vitals/render#frozen-frames)\n- [Run benchmarks in Continuous Integration](/topic/performance/benchmarking/benchmarking-in-ci)\n- [Create and measure Baseline Profiles without Macrobenchmark](/topic/performance/baselineprofiles/manually-create-measure)"]]