Définir et gérer des wakelocks

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.

Voir aussi