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.