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âchesJobScheduler
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:
- Vérifiez qu'un service de messagerie cloud est installé sur l'appareil.
- Dans le fichier de configuration de superposition d'appareil
overlay/frameworks/base/core/res/res/values/config.xml
, définissezconfig_enableAutoPowerModes
surtrue
: Dans AOSP, ce paramètre est défini par défaut sur<bool name="config_enableAutoPowerModes">true</bool>
false
(Doze désactivé).
- Vérifiez que les applications et services préchargés :
- Respectez les consignes d'optimisation de l'économie d'énergie. Pour en savoir plus, consultez Tester et optimiser les applications.
OR
- sont exemptées de Sommeil et de Mise en veille des applications. Pour en savoir plus, consultez la section Exempter des applications.
- Respectez les consignes d'optimisation de l'économie d'énergie. Pour en savoir plus, consultez Tester et optimiser les applications.
- Vérifiez que les services nécessaires sont exemptés de Doze.
Conseils
- Si possible, utilisez FCM pour les messages en aval.
- Si vos utilisateurs doivent voir une notification immédiatement, utilisez un message FCM à priorité élevée.
- Fournissez suffisamment d'informations dans la charge utile du message initiale (pour éviter tout accès réseau ultérieur inutile).
- Définissez des alarmes critiques avec
setAndAllowWhileIdle()
etsetExactAndAllowWhileIdle()
.
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.