Gestion de l'alimentation de la plate-forme avec Sommeil

Pour améliorer l'autonomie de la batterie de l'appareil, Android peut affecter son état en surveillant son utilisation et son état de veille. La plate-forme peut passer en mode veille pour suspendre l'exécution des activités lorsque l'appareil n'est pas utilisé.

À propos du mode Sommeil

Doze prolonge l'autonomie de la batterie en différant l'activité du processeur et du réseau en arrière-plan de l'application lorsqu'un appareil est inutilisé pendant de longues périodes.

Les appareils inactifs en mode Doze entrent périodiquement dans une fenêtre de maintenance, pendant laquelle les applications peuvent effectuer les tâches en attente (synchronisations, tâches, etc.). La mise en veille reprend ensuite pendant une période plus longue, suivie d'un autre intervalle de maintenance. La plate-forme poursuit la séquence de sommeil/maintenance Doze, en augmentant la durée d'inactivité à chaque fois, jusqu'à atteindre un maximum de quelques heures de sommeil. Un appareil en mode Sommeil reste toujours conscient des mouvements et quitte immédiatement le mode Sommeil si un mouvement est détecté.

Android 7.0 et versions ultérieures étend Doze pour déclencher un ensemble d'optimisations plus léger chaque fois qu'un utilisateur éteint l'écran de l'appareil, même lorsqu'il continue de se déplacer, ce qui permet d'augmenter l'autonomie de la batterie.

Les services système critiques sont généralement configurés par les fabricants d'appareils pour être exemptés de Doze. Les utilisateurs peuvent également exempter des applications spécifiques de Doze à l'aide du menu "Paramètres". Toutefois, l'exemption d'applications peut entraîner une décharge de la batterie de l'appareil. Par défaut, Doze est désactivé dans AOSP. Pour savoir comment activer Doze, consultez Intégrer Doze.

Exigences concernant Doze

La prise en charge de Doze nécessite que l'appareil dispose d'un service de messagerie cloud, tel que Firebase Cloud Messaging (FCM). Les événements de déclencheur externe, tels que les messages cloud, peuvent réveiller temporairement les applications pour qu'elles effectuent des tâches pendant que l'appareil reste en mode Veille.

La prise en charge complète de Doze nécessite également un détecteur de mouvement important (SMD) sur l'appareil. Toutefois, le mode Doze léger d'Android 7.0 et versions ultérieures ne nécessite pas de SMD. Si le mode Sommeil est activé sur un appareil:

  • Si un SMD est présent, des optimisations complètes de Doze sont effectuées (y compris des optimisations légères).
  • Ne dispose pas de SMD. Seules les optimisations légères de Doze sont effectuées.

Cycle de vie de Doze

La mise en veille commence lorsque la plate-forme détecte que l'appareil est inactif et se termine lorsqu'une ou plusieurs activités de critères de sortie se produisent.

La plate-forme détecte qu'un appareil est inactif lorsque:

  • L'appareil est fixe (à l'aide de la technologie SMD).
  • L'écran de l'appareil est éteint pendant un certain temps.

Le mode Doze ne s'active pas lorsqu'un appareil fonctionnant sur batterie est branché sur un chargeur.

Pendant le mode Sommeil

La plate-forme tente de maintenir le système en veille, en reprenant périodiquement les opérations normales pendant une période de maintenance, puis en renvoyant l'appareil en veille pendant des périodes plus longues. En mode veille, les restrictions suivantes sont actives:

  • Les applications ne sont pas autorisées à accéder au réseau.
  • Les wakelocks d'application sont ignorés.
  • Les alarmes sont différées. Excluit les alarmes du réveil et les alarmes définies à l'aide de setAndAllowWhileIdle() (limité à une alarme toutes les 15 minutes par application en mode Doze). Cette exception s'applique aux applications (telles que Agenda) qui doivent afficher des notifications de rappel d'événement.
  • Les recherches Wi-Fi ne sont pas effectuées.
  • Les synchronisations SyncAdapter et les tâches JobScheduler sont différées jusqu'au prochain intervalle de maintenance.
  • Les applications qui reçoivent des SMS et des MMS sont ajoutées à une liste blanche temporaire afin qu'elles puissent terminer leur traitement.

Quitter

La plate-forme sort l'appareil de la mise en veille lorsque les éléments suivants sont détectés:

  • Interaction de l'utilisateur avec l'appareil
  • Mouvement de l'appareil
  • Écran de l'appareil allumé
  • Alarme imminente de l'application AlarmClock

Les notifications ne font pas sortir l'appareil de la mise en veille.

Android 7.0 et les versions ultérieures étendent Doze en activant un mode veille léger lorsque l'écran est éteint, avant que l'appareil ne soit inactif.

Figure 1 : Modes Doze pour les appareils fixes et non fixes

Action Sommeil Sommeil léger
Déclencheur Écran éteint, sur batterie, à l'arrêt Écran éteint, sur batterie (débranché)
Durée Périodes de maintenance de plus en plus longues Périodes répétées de N minutes avec des intervalles de maintenance
Restrictions Aucun accès réseau, verrouillage de réveil ni analyse GPS/Wi-Fi ; les alarmes et les tâches/synchronisations sont différées Aucun accès au réseau ; les tâches/synchronisations sont différées, sauf pendant les intervalles de maintenance
Comportement Seules les notifications push à priorité élevée sont reçues Tous les messages en temps réel (messages instantanés, appels, etc.) reçus ; le message de notification push de priorité élevée permet un accès temporaire au réseau
Quitter Mouvement, écran allumé ou alarme du réveil Écran activé

Interaction avec la mise en veille de l'application

  • Le temps passé en mode Sommeil n'est pas décompté de la mise en veille des applications.
  • Lorsque l'appareil est en mode Sommeil, les applications inactives sont autorisées à effectuer des opérations normales au moins une fois par jour.

Intégrer Doze

Lorsque le mode Doze est activé, les appareils compatibles avec SENSOR_TYPE_SIGNIFICANT_MOTION effectuent des optimisations complètes du mode Doze (y compris des optimisations légères). Les appareils sans SMD n'effectuent que des optimisations légères du mode Doze. Android sélectionne automatiquement les optimisations Doze appropriées, et la configuration du fournisseur n'est pas nécessaire.

Pour activer Doze sur un appareil:

  1. Vérifiez qu'un service de messagerie cloud est installé sur l'appareil.
  2. Dans le fichier de configuration de superposition d'appareil overlay/frameworks/base/core/res/res/values/config.xml, définissez config_enableAutoPowerModes sur true:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    Dans AOSP, ce paramètre est défini par défaut sur false (Doze désactivé).
  3. Vérifiez que les applications et services préchargés :
  4. Vérifiez que les services nécessaires sont exemptés de Doze.

Conseils

Tester et optimiser les applications

Testez toutes les applications (en particulier les applications préchargées) en mode Sommeil. Pour en savoir plus, consultez la section Tester avec les fonctionnalités Sommeil et Mise en veille des applications.