Définir un wakelock

Vous pouvez définir un verrouillage d'activation pour maintenir temporairement l'appareil en veille.

Dépendances

Votre application doit disposer de l'autorisation WAKE_LOCK pour définir un wake lock. Ajoutez l'autorisation au fichier manifeste de votre application:

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

Créer et acquérir un wake lock

Pour acquérir un wake lock, procédez comme suit:

  1. Appelez PowerManager.newWakeLock() pour créer un wake lock. Cela crée et configure un objet PowerManager.WakeLock, mais ne maintient pas l'appareil éveillé.

  2. Lorsque vous souhaitez maintenir l'appareil allumé, appelez la méthode acquire() de l'objet wakelock.

Par exemple, si votre application inclut un broadcast receiver qui utilise un service pour effectuer une tâche, vous pouvez utiliser ce code pour définir et acquérir un wake lock:

Kotlin

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

Java

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

Points clés concernant ce code

Lorsque le code crée l'objet wake lock, il utilise le nom de la classe dans la balise wake lock. Nous vous recommandons d'inclure le nom du package, de la classe ou de la méthode dans la balise de wakelock. De cette façon, en cas d'erreur, il est plus facile de localiser le verrouillage de réveil dans votre code source. Pour en savoir plus, consultez la section Nommer correctement le verrouillage de réveil.

Voir aussi