Doze Mode : essence, phases et mécanisme d'économie d'énergie

Auteur : IT Sectr Publié le : 2026-03-28 Temps de lecture : 10 min

Le Doze Mode est une fonctionnalité d'économie d'énergie d'Android, introduite dans la version 6.0 Marshmallow, qui limite considérablement l'activité en arrière-plan des applications lorsque l'appareil est inactif. Le système place les applications dans un état de consommation d'énergie réduite, en reportant les requêtes réseau, la synchronisation et JobScheduler pour prolonger l'autonomie de la batterie. Selon une analyse d'Android Developers, 2025, le Doze Mode peut augmenter le temps de veille de l'appareil de 2 à 3 fois selon le modèle et la version du système d'exploitation.

Points clés

  • Doze Mode — mode veille Android 6+ qui limite l'activité en arrière-plan en cas d'inactivité
  • Deux phases — Light Doze (sommeil léger) et Deep Doze (sommeil profond) avec des restrictions différentes
  • Fenêtres de maintenance — courtes périodes pendant lesquelles les applications peuvent exécuter des tâches en Deep Doze
  • Liste blanche — exceptions pour les applications autorisées à travailler en arrière-plan pendant Doze
  • GCM/FCM — notifications push haute priorité qui réveillent l'appareil de Doze

Qu'est-ce que le Doze Mode

Doze Mode est un mécanisme intégré d'économie d'énergie d'Android qui s'active lorsque l'appareil n'est pas connecté à un chargeur, que l'écran est éteint et que l'utilisateur n'a pas interagi avec l'appareil pendant une certaine période. L'objectif de Doze est de minimiser l'activité en arrière-plan des applications pour maximiser l'autonomie de la batterie en mode veille. Le système reporte JobScheduler, la synchronisation des comptes, AlarmManager et les requêtes réseau.

Le mode a été introduit dans Android 6.0 Marshmallow (API 23) et a été considérablement amélioré dans les versions ultérieures. Android 7.0 Nougat a introduit une deuxième phase (Light Doze) qui s'active lorsque l'appareil est en mouvement. Android 8.0 a ajouté des restrictions supplémentaires sur les services en arrière-plan fonctionnant avec Doze. Dans Android 12+, Doze a été intégré à un système de gestion de batterie mis à jour qui analyse le comportement de l'utilisateur.

Il est important de comprendre : le Doze Mode ne désactive pas complètement les applications. Il les place dans un état avec des tâches reportées, mais ne tue pas les processus. Un Foreground Service avec notification continue de fonctionner, les notifications push haute priorité (FCM high-priority) sont délivrées et les alarmes se déclenchent comme prévu. Doze n'affecte que les opérations en arrière-plan que l'utilisateur ne voit ni n'attend à ce moment-là.

Conditions d'activation

Doze Mode s'active lorsque toutes les conditions sont remplies : l'écran est éteint depuis plus de 30 minutes (première activation), l'appareil est immobile (via l'accéléromètre) et n'est pas connecté à un chargeur. Si l'utilisateur prend le téléphone ou branche un chargeur, Doze est immédiatement désactivé. Dans Android 7+, Light Doze s'active après seulement 5 minutes d'inactivité, même lorsque l'appareil est en mouvement.

Comment fonctionne le Doze Mode

Doze Mode gère l'activité en arrière-plan via le service système DeviceIdleController, qui analyse l'état des capteurs, de l'écran et du chargeur. Lorsque toutes les conditions d'activation sont réunies, le système place les applications en mode veille, regroupant leurs requêtes dans des fenêtres de maintenance. À l'intérieur de ces fenêtres, toutes les tâches reportées — appels réseau, synchronisation, AlarmManager — sont exécutées en lot.

Le PowerManager du système contrôle quelles applications peuvent sortir de Doze. Les notifications push haute priorité (FCM high-priority) peuvent réveiller l'appareil pour délivrer un message. Le système ignore également Doze pour les applications ajoutées par l'utilisateur à la liste blanche d'optimisation de la batterie. Toutes les autres applications doivent attendre la prochaine fenêtre de maintenance.

La durée des fenêtres de maintenance en Deep Doze augmente de manière exponentielle : première fenêtre après 1 heure, deuxième après 2 heures, troisième après 4 heures, et ainsi de suite jusqu'à un intervalle maximum de 12 heures. Cela signifie que plus l'appareil reste longtemps en Doze, moins les applications peuvent exécuter de tâches en arrière-plan — économisant la batterie de la manière la plus agressive possible.

Impact sur les requêtes réseau

En Doze Mode, toutes les requêtes réseau sont suspendues jusqu'à l'ouverture d'une fenêtre de maintenance. Les seules exceptions sont les messages FCM haute priorité (avec la balise « high_priority » dans le payload) et les signaux de AlarmManager avec les indicateurs setAndAllowWhileIdle() ou setExactAndAllowWhileIdle(). Les appels réseau normaux via Retrofit, OkHttp ou Volley ne seront pas exécutés tant qu'une fenêtre ne s'ouvre pas.

Phases du Doze Mode

Doze Mode se compose de deux phases : Light Doze (sommeil léger) et Deep Doze (sommeil profond). Chaque phase impose ses propres restrictions et a des seuils d'activation différents. Comprendre la différence entre les phases est essentiel pour un développeur qui conçoit des tâches en arrière-plan résilientes au mode d'économie d'énergie.

Light Doze (sommeil léger)

Light Doze s'active après 5–30 minutes d'inactivité de l'appareil (écran éteint, aucun mouvement). Dans cette phase, les requêtes réseau et la synchronisation sont suspendues, mais AlarmManager et JobScheduler continuent de fonctionner avec de légers retards. Les applications peuvent sortir de Light Doze en recevant une notification push ou en se connectant à un chargeur. Light Doze n'exige pas d'immobilité totale — l'appareil peut être en mouvement.

Deep Doze (sommeil profond)

Deep Doze survient après 60–90 minutes d'inactivité avec l'appareil immobile (l'accéléromètre ne détecte aucun mouvement). En Deep Doze, le système est considérablement plus agressif dans le report des tâches : les fenêtres de maintenance s'ouvrent moins fréquemment (avec un intervalle augmentant de manière exponentielle), AlarmManager ne se déclenche qu'avec les indicateurs setAndAllowWhileIdle() et WakeLock ne fonctionne pas de manière habituelle. Les applications ne figurant pas sur la liste blanche sont presque complètement privées d'activité en arrière-plan.

ParamètreLight DozeDeep Doze
Temps d'activation5–30 minutes60–90 minutes
Exigence de mouvementNon requiseImmobilité
Intervalle des fenêtres10–60 minutes1–12 heures
AlarmManagerFonctionne avec retardsUniquement withAllowWhileIdle
Réseau dans les fenêtresDisponibleDisponible

Restrictions du Doze Mode

Doze Mode impose plusieurs catégories de restrictions qu'un développeur doit prendre en compte lors de la conception d'une application. Ignorer ces restrictions entraîne l'inexécution des tâches en arrière-plan et l'utilisateur voit un comportement incorrect de l'application — mises à jour manquantes, messages non envoyés, synchronisation incomplète.

Restrictions réseau

Toutes les requêtes réseau sont bloquées jusqu'à l'ouverture d'une fenêtre de maintenance. Cela concerne les appels HTTP, les connexions WebSocket et les téléchargements de fichiers. L'exception concerne les messages FCM haute priorité, qui passent par un canal séparé de Google Play Services indépendant de Doze. Pour la synchronisation de données critiques, il est recommandé d'utiliser WorkManager avec la politique NetworkType.CONNECTED.

Restrictions d'AlarmManager

AlarmManager en Deep Doze reporte toutes les alarmes sauf celles créées avec les méthodes setAndAllowWhileIdle() et setExactAndAllowWhileIdle(). Cependant, ces méthodes ont également une limite — pas plus d'un déclenchement toutes les 9 minutes par application. Les alarmes exactes avec setExact() en Deep Doze ne garantissent pas un déclenchement à l'heure spécifiée.

Restrictions de WakeLock

WakeLock se comporte de manière inhabituelle en Doze Mode : le système ne maintient pas le verrou de réveil pour les applications en dehors de la liste blanche. Même si une application a correctement acquis un PARTIAL_WAKE_LOCK, lorsque Deep Doze commence, le système peut le libérer de force. La seule façon de garantir l'exécution des tâches en Doze est d'utiliser un Foreground Service avec une notification.

  • Réseau — toutes les requêtes reportées jusqu'à la fenêtre de maintenance, sauf FCM high-priority
  • AlarmManager — alarmes exactes reportées ; setAndAllowWhileIdle — pas plus de 1/9 min
  • WakeLock — libéré de force pour les applications hors liste blanche
  • JobScheduler — tâches regroupées dans des fenêtres de maintenance avec intervalle exponentiel
  • Synchronisation — Account SyncManager suspendu jusqu'à la sortie de Doze

Liste blanche et exceptions

La liste blanche de Doze est une liste d'applications auxquelles le système autorise l'activité en arrière-plan en mode d'économie d'énergie avec des restrictions minimales. L'utilisateur peut ajouter manuellement des applications à la liste via Paramètres → Batterie → Optimisation de la batterie. Les applications système, les lanceurs et Google Play Services sont sur la liste blanche par défaut.

Un développeur peut demander l'ajout à la liste blanche via une boîte de dialogue système avec l'Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Cela nécessite l'autorisation REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dans le manifeste. Cependant, Google ne recommande pas de demander une exception sans raison valable — les applications qui abusent de cette capacité risquent d'être rejetées lors de leur publication sur Google Play.

Sans liste blanche, une application peut utiliser FCM haute priorité pour réveiller l'appareil de Doze. Chacun de ces messages donne à l'application une courte fenêtre (10–30 secondes) pour exécuter une tâche. Pour des opérations plus longues, l'application doit démarrer un Foreground Service, qui continue de fonctionner dans les fenêtres de maintenance de Doze. Google fournit également un mécanisme d'exemption pour certains types d'applications : navigation, médical, messagerie.

Comment vérifier le statut de la liste blanche

Pour vérifier si une application est sur la liste blanche d'optimisation de la batterie, utilisez la méthode powerManager.isIgnoringBatteryOptimizations(). Si la méthode renvoie false, l'application est soumise à toutes les restrictions de Doze. Si elle renvoie true, l'application peut utiliser Wakelock, AlarmManager et le réseau sans restrictions même en Deep Doze. Cependant, abuser de ce privilège entraînera de mauvaises critiques des utilisateurs.

Tester le Doze Mode

Tester le comportement de l'application en Doze Mode est une étape obligatoire du développement, car Doze peut perturber les fonctions en arrière-plan. Android fournit des outils en ligne de commande via ADB pour forcer la transition de l'appareil en Light Doze et Deep Doze. Les tests doivent être effectués sur un appareil physique ou un émulateur avec Android 6.0+.

Pour entrer en Light Doze, utilisez la commande adb shell dumpsys deviceidle step light. Pour Deep Doze — adb shell dumpsys deviceidle step deep. La commande adb shell dumpsys deviceidle force-idle deep fait passer immédiatement l'appareil en Deep Doze sans attendre le délai d'attente standard. Après les tests, quittez Doze avec la commande adb shell dumpsys deviceidle unforce.

bash
# Forcer l'entrée en Light Doze
$ adb shell dumpsys deviceidle step light

# Forcer l'entrée en Deep Doze
$ adb shell dumpsys deviceidle step deep

# Forcer Deep Doze immédiatement
$ adb shell dumpsys deviceidle force-idle deep

# Quitter Doze
$ adb shell dumpsys deviceidle unforce

# Voir le statut de Doze
$ adb shell dumpsys deviceidle

Vérification du fonctionnement de l'application

Après la transition en Doze Mode, vérifiez : si les requêtes réseau fonctionnent (elles devraient être reportées), si AlarmManager se déclenche, si les messages FCM sont délivrés et si les tâches WorkManager s'exécutent correctement. WorkManager continue de fonctionner en Doze : ses tâches sont exécutées dans les fenêtres de maintenance. Cependant, si une tâche nécessite une exécution immédiate, spécifiez setExpedited() ou utilisez un Foreground Service.

Bonnes pratiques pour Doze Mode

Développer une application résiliente au Doze Mode nécessite de repenser l'approche des tâches en arrière-plan. Google recommande de concevoir l'application pour qu'elle fonctionne correctement sous toutes les restrictions de Doze, sans dépendre de l'exécution immédiate des opérations en arrière-plan. Le principe fondamental est d'utiliser WorkManager pour toutes les tâches en arrière-plan qui peuvent être reportées.

Utilisez WorkManager

WorkManager est l'API recommandée par Google pour les tâches en arrière-plan car elle s'adapte automatiquement à Doze. WorkManager utilise JobScheduler (API 23+) ou AlarmManager + BroadcastReceiver sur les anciennes versions. Les tâches WorkManager s'exécutent dans la fenêtre de maintenance Doze la plus proche, ou immédiatement si nécessaire via Expedited Work (Foreground Service sous le capot).

Foreground Service pour les tâches critiques

Si une tâche ne peut pas être reportée (lecture multimédia, navigation, VoIP), utilisez un Foreground Service avec une notification obligatoire. Un Foreground Service reçoit une exemption de Doze : il peut maintenir un WakeLock et exécuter des requêtes réseau. Cependant, même un Foreground Service est soumis aux politiques de fenêtres de maintenance de Deep Doze pour certains types de tâches — par exemple, dataSync.

FCM haute priorité pour les notifications

Pour délivrer des messages nécessitant une attention immédiate (appel entrant, notification urgente), utilisez les messages FCM haute priorité. Ces messages réveillent l'appareil de Doze et donnent à l'application une courte fenêtre de traitement. N'utilisez pas la haute priorité pour les notifications régulières — cela entraînerait un épuisement rapide de la batterie et pourrait être considéré comme une violation de la politique de Google Play.

  • WorkManager — API préférée pour toutes les tâches en arrière-plan reportables
  • Foreground Service — pour les tâches critiques avec une notification visible
  • FCM haute priorité — pour délivrer des messages urgents avec réveil de l'appareil
  • Ne demandez pas la liste blanche sans nécessité critique — cela dégrade l'expérience utilisateur
  • Testez l'application en Light et Deep Doze via ADB avant la publication

Foire aux questions

Qu'est-ce que le Doze Mode sous Android ?

Doze Mode est un mode d'économie d'énergie d'Android 6+ qui limite l'activité en arrière-plan des applications lorsque l'appareil n'est pas utilisé (écran éteint, aucun mouvement). Le système reporte les requêtes réseau, la synchronisation et JobScheduler, les regroupant dans des fenêtres de maintenance pour économiser la batterie.

Quelles sont les phases du Doze Mode ?

Doze Mode a deux phases : Light Doze (sommeil léger) s'active après 5–30 minutes et permet à AlarmManager de fonctionner avec des retards. Deep Doze (sommeil profond) survient après 60–90 minutes d'immobilité, limitant agressivement les tâches en arrière-plan avec des fenêtres de maintenance allant jusqu'à 12 heures.

Quelles restrictions Doze impose-t-il aux applications ?

Doze bloque les requêtes réseau, reporte AlarmManager (sauf setAndAllowWhileIdle), libère de force WakeLock et regroupe JobScheduler dans des fenêtres de maintenance. Les exceptions incluent Foreground Service, FCM haute priorité et les applications de la liste blanche de l'utilisateur.

Comment ajouter une application à la liste blanche de Doze ?

Demandez l'autorisation REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dans le manifeste et envoyez un Intent avec l'action ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Le système affichera une boîte de dialogue à l'utilisateur. L'ajout à la liste blanche est un privilège que Google recommande d'utiliser uniquement pour les applications critiques.

Comment tester une application en Doze Mode ?

Utilisez les commandes ADB : adb shell dumpsys deviceidle force-idle deep pour entrer en Deep Doze, adb shell dumpsys deviceidle step light pour Light Doze, adb shell dumpsys deviceidle unforce pour sortir. Vérifiez WorkManager, AlarmManager et FCM dans chaque mode.

Résumé

  • Doze Mode — mode veille Android 6+ qui s'active lorsque l'appareil est inactif pour économiser la batterie
  • Light Doze — phase légère après 5–30 minutes, restrictions partielles sur AlarmManager et le réseau
  • Deep Doze — phase profonde après 60–90 minutes d'immobilité avec fenêtres de maintenance jusqu'à 12 heures
  • Restrictions — blocage réseau, report d'AlarmManager, libération de WakeLock
  • Exceptions — Foreground Service, FCM haute priorité, applications de la liste blanche
  • WorkManager — API recommandée pour les tâches en arrière-plan, s'adapte automatiquement à Doze
  • Test — vérification obligatoire via ADB (dumpsys deviceidle) avant la publication

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi