Si vous devez maintenir un appareil en cours d'exécution pour effectuer une tâche avant qu'il ne passe en état de suspension, vous pouvez utiliser une fonctionnalité de service système PowerManager
appelée wake locks (verrous de réveil). Les wake locks permettent à votre application de contrôler l'état d'alimentation de l'appareil.
Définir un wakelock
Pour utiliser un wake lock, la première étape consiste à ajouter l'autorisation WAKE_LOCK
au fichier manifeste de votre application:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Si votre application inclut un broadcast receiver qui utilise un service pour effectuer une tâche, voici comment définir directement un wake lock:
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();
Libérer un wakelock
Pour relâcher le verrouillage de réveil, appelez wakelock.release()
. Vous libérez ainsi votre réclamation sur le processeur. Il est important de libérer un wakelock dès que votre application a fini de l'utiliser pour éviter de décharger la batterie.