Gestion de l'alimentation de la plateforme

Pour améliorer la durée de vie de la batterie de l'appareil, Android peut affecter l'état de l'appareil en surveillant son utilisation et son état de veille. La plate-forme peut entrer en état de veille pour interrompre les activités lorsque l'appareil n'est pas utilisé.

Sommeiller

Doze prolonge la durée de vie 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 dans Doze entrent périodiquement dans une fenêtre de maintenance, pendant laquelle les applications peuvent terminer le travail en attente (synchronisations, tâches, etc.). Doze reprend ensuite son sommeil pendant une période plus longue, suivie d'une autre fenêtre de maintenance. La plate-forme continue la séquence veille/maintenance Doze, en augmentant à chaque fois la durée d'inactivité, jusqu'à ce qu'un maximum de quelques heures de sommeil soit atteint. À tout moment, un appareil dans Doze reste conscient du mouvement et quitte immédiatement Doze si un mouvement est détecté.

Android 7.0 et versions ultérieures étendent Doze pour déclencher un ensemble d'optimisations plus légères chaque fois qu'un utilisateur éteint l'écran de l'appareil, même lorsqu'il continue de se déplacer, ce qui permet une durée de vie de la batterie plus longue.

Les services système critiques sont généralement mis en place 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. Cependant, l'exonération des applications peut entraîner une décharge de la batterie de l'appareil. Par défaut, Doze est désactivé dans AOSP ; pour plus de détails sur l'activation de Doze, voir Intégration de Doze .

Exigences de somnolence

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 déclencheurs externes, tels que les messages cloud, peuvent temporairement réveiller les applications pour qu'elles fonctionnent pendant que l'appareil reste en mode Doze.

La prise en charge complète de Doze nécessite également un détecteur de mouvement important (SMD) sur l'appareil ; cependant, le mode Doze léger dans Android 7.0 et supérieur ne nécessite pas de SMD. Si Doze est activé sur un appareil qui :

  • A un SMD, des optimisations Doze complètes se produisent (inclut des optimisations légères).
  • N'a pas de SMD, seules les optimisations légères de Doze se produisent.

Cycle de vie de Somnolence

Doze commence lorsque la plateforme détecte que l'appareil est inactif et se termine lorsqu'une ou plusieurs activités liées aux critères de sortie se produisent.

Détection

La plateforme détecte qu'un appareil est inactif lorsque :

  • L'appareil est stationnaire (en utilisant SMD).
  • L'écran de l'appareil est éteint pendant un certain temps.

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

Pendant la somnolence

La plate-forme tente de maintenir le système en état de veille, en reprenant périodiquement les opérations normales pendant une fenêtre de maintenance, puis en remettant l'appareil en veille pendant des périodes répétitives plus longues. Pendant le sommeil, les restrictions suivantes sont actives :

  • Les applications ne sont pas autorisées à accéder au réseau.
  • Wakelocks d'application ignorés.
  • Les alarmes sont différées. Exclut les alarmes de réveil et les alarmes définies à l'aide setAndAllowWhileIdle() (limitées à 1 toutes les 15 minutes par application en mode Doze). Cette exemption est destinée aux applications (telles que Calendrier) qui doivent afficher des notifications de rappel d'événements.
  • Les analyses Wi-Fi ne sont pas effectuées.
  • Les synchronisations SyncAdapter et les tâches JobScheduler sont reportées jusqu'à la prochaine fenêtre de maintenance.
  • Les applications recevant des messages SMS et MMS sont placées sur une liste blanche temporaire afin qu'elles puissent terminer leur traitement.

Sortie

La plateforme quitte l'appareil de Doze lorsqu'elle détecte :

  • Interaction de l'utilisateur avec l'appareil
  • Mouvement de l'appareil
  • L'écran de l'appareil s'allume
  • Alarme AlarmClock imminente

Les notifications n'entraînent pas la sortie de l'appareil de Doze.

Android 7.0 et supérieur étend 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 non stationnaires et fixes
Action Sommeiller Somnolence légère
Déclenchement Écran éteint, sur batterie, à l'arrêt Écran éteint, sur batterie (débranché)
Horaire Augmentation successive des périodes avec maintenance Périodes répétées de N minutes avec fenêtres de maintenance
Restrictions Pas d'accès au réseau, de wakelock ou de scan GPS/Wi-Fi ; alarmes et tâches/synchronisations différées Aucun accès au réseau ; tâches/synchronisations différées sauf pendant les fenêtres de maintenance
Comportement Seuls les messages de notification push de haute priorité reçus Tous les messages en temps réel (messages instantanés, appels, etc.) reçus ; Un message de notification push de haute priorité permet un accès temporaire au réseau
Sortie Mouvement, écran allumé ou réveil Allume l'écran

Interaction avec la veille d'application

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

Intégration de Doze

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

Pour activer Doze pour un appareil :

  1. Confirmez qu'un service de messagerie cloud est installé sur l'appareil.
  2. Dans le fichier de configuration de superposition de périphériques 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 sur false (Doze désactivé) par défaut.
  3. Confirmez que les applications et services préchargés :
  4. Confirmez 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 Doze. Pour plus de détails, reportez-vous à Tests avec Doze et App Standby .