Impostare e gestire i wakelock

Se devi mantenere un dispositivo in esecuzione per completare un'attività prima che entri in stato di sospensione, puoi utilizzare una funzionalità del servizio di sistema PowerManager chiamata blocchi di attivazione. I blocchi di riattivazione consentono alla tua app di controllare lo stato di alimentazione del dispositivo.

Impostare un blocco di attivazione

Per utilizzare un blocco di attivazione, il primo passaggio consiste nell'aggiungere l'autorizzazione WAKE_LOCK al file manifest della tua applicazione:

<uses-permission android:name="android.permission.WAKE_LOCK" />

Se la tua app include un broadcast receiver che utilizza un servizio per svolgere alcune attività, Ecco come impostare direttamente un blocco di attivazione:

Kotlin

val wakeLock: PowerManager.WakeLock =
        (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
            newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                acquire()
            }
        }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyApp::MyWakelockTag");
wakeLock.acquire();

Rilasciare un wakelock

Per rilasciare il blocco di attivazione, chiama wakelock.release(). In questo modo, la rivendicazione viene inviata alla CPU. È importante rilasciare un blocco di attivazione non appena l'app ha terminato di utilizzarlo per evitare di scaricare la batteria.

Vedi anche