Pour améliorer la durée de vie de la batterie de l'appareil, Android peut affecter l'état de l'appareil en surveillant l'utilisation et l'éveil de l'appareil. La plate-forme peut entrer dans un état de veille pour interrompre l'exécution des activités pendant que 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 n'est pas utilisé pendant de longues périodes.
Les appareils inactifs dans Doze entrent périodiquement dans une fenêtre de maintenance, au cours de laquelle les applications peuvent effectuer des travaux en attente (synchronisations, tâches, etc.). Doze reprend ensuite le 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 la durée d'inactivité à chaque fois, jusqu'à ce qu'un maximum de quelques heures de temps de veille 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 supérieur étend Doze pour déclencher un ensemble plus léger d'optimisations chaque fois qu'un utilisateur éteint l'écran de l'appareil, même lorsque l'utilisateur continue de se déplacer, permettant 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'exemption d'applications peut épuiser 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 (y compris des optimisations légères).
- N'a pas de SMD, seules les optimisations légères Doze se produisent.
Cycle de vie Doze
Doze 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.
Détection
La plateforme détecte qu'un appareil est inactif lorsque :
- L'appareil est stationnaire (utilisant SMD).
- L'écran de l'appareil est éteint pendant un certain temps.
Le mode Doze ne s'enclenche pas lorsqu'un appareil alimenté par batterie est branché sur un chargeur d'alimentation.
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étées 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é à 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énement. - Les analyses Wi-Fi ne sont pas effectuées.
- Les synchronisations
SyncAdapter
et les tâchesJobScheduler
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.
Sortir
La plate-forme 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
- Réveil imminent
Les notifications ne font pas sortir 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.
Action | Sommeiller | Sommeil léger |
---|---|---|
Gâchette | Écran éteint, sur batterie, à l'arrêt | Écran éteint, sur batterie (débranché) |
Horaire | Périodes successivement croissantes 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 verrouillage de réveil ou de balayage GPS/Wi-Fi ; alarmes et tâches/synchronisations différées | Pas d'accès au réseau ; travaux/synchronisations différés sauf pendant les fenêtres de maintenance |
Comportement | Seuls les messages de notification push de haute priorité sont reçus | Tous les messages en temps réel (messages instantanés, appels, etc.) reçus ; le message de notification push de haute priorité permet un accès temporaire au réseau |
Sortir | Mouvement, écran allumé ou réveil | Allume l'écran |
Interaction avec l'application en veille
- Le temps passé dans Doze ne compte pas pour App Standby.
- Lorsque l'appareil est en veille, 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 qui prennent en charge SENSOR_TYPE_SIGNIFICANT_MOTION
effectuent des optimisations Doze complètes (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 :
- Vérifiez qu'un service de messagerie cloud est installé sur l'appareil.
- Dans le fichier de configuration de superposition de l'appareil overlay
overlay/frameworks/base/core/res/res/values/config.xml
, définissezconfig_enableAutoPowerModes
surtrue
:<bool name="config_enableAutoPowerModes">true</bool>
Dans AOSP, ce paramètre est défini surfalse
(Doze disabled) par défaut. - Vérifiez que les applications et services préchargés :
- Utilisez les directives d'optimisation d'économie d'énergie . Pour plus de détails, voir Test et optimisation des applications .
OU
- Sont exemptés de Doze et App Standby. Pour plus de détails, voir Demandes d'exemption .
- Utilisez les directives d'optimisation d'économie d'énergie . Pour plus de détails, voir Test et optimisation des applications .
- Confirmez que les services nécessaires sont exemptés de Doze.
Des astuces
- Si possible, utilisez FCM pour la messagerie en aval .
- Si vos utilisateurs doivent voir une notification immédiatement, utilisez un message FCM prioritaire .
- Fournissez suffisamment d'informations dans la charge utile du message initial (pour éviter un 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 Doze. Pour plus de détails, reportez-vous à Test avec Doze et App Standby .