Wakelock parziali bloccati

I wakelock parziali sono un meccanismo dell'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). La tua app acquisisce un wake lock parziale chiamando acquire() con il flag PARTIAL_WAKE_LOCK o utilizzando altre API che acquisiscono wake lock. Un wakelock parziale si blocca se viene mantenuto a lungo mentre la tua app è in esecuzione in background (nessuna parte della tua app è visibile all'utente). Questa condizione scarica la batteria del dispositivo perché impedisce al dispositivo di entrare in stati di consumo energetico inferiore. I wake lock parziali devono essere utilizzati solo quando necessario e rilasciati non appena non sono più necessari.

Se la tua app ha un blocco parziale di 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 avvisandoti tramite Play Console quando la tua app mostra wake lock parziali bloccati. Android vitals segnala i wakelock parziali come bloccati quando si verifica almeno un wakelock parziale di un'ora in un periodo di 24 ore.

Il numero di sessioni della batteria visualizzate è un 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 ti rendi conto che la tua app ha blocchi di riattivazione parziali bloccati, il passaggio successivo è risolvere il problema.

Risolvi il problema

Poiché i wake lock possono scaricare la batteria del dispositivo, non dovresti utilizzarli se esiste un'alternativa. La documentazione Scegliere l'API giusta per mantenere attivo il dispositivo può aiutarti a trovare la soluzione migliore per la tua app.

Se devi utilizzare un wake lock, segui le best practice per i wake lock per assicurarti che non influiscano negativamente sull'efficienza del dispositivo. In particolare, assicurati che ogni dispositivo che acquisisci venga rilasciato e rilascia il blocco il più rapidamente possibile.

Dopo aver risolto il problema nel codice, puoi verificare le correzioni utilizzando gli strumenti di debug del wake lock locale.

Vedi anche