De version en version, Google ne cesse d’optimiser Android pour améliorer l’autonomie des terminaux. Voici ce qu’il a élaboré sur Android O, la prochaine version du système qui devrait sortir à la fin de l’été.

Android et l’autonomie : une problématique qui existe depuis de longues… longues… années

Selon une étude menée par Google, la première source de frustration sur les smartphones concerne l’autonomie des terminaux, où plus d’un utilisateur sur trois s’en attriste. Au fil des années les capacités des batteries n’ont cessé de croître, sans pour autant que l’autonomie suive la même courbe. Les terminaux sont en effet de plus en plus sophistiqués et font désormais place à des écrans à très haute définition, des processeurs surpuissants… De son côté Android ne cesse d’évoluer pour enrichir son écosystème et les Play Services apportent une quantité impressionnante de nouvelles fonctionnalités, y compris aux anciennes versions d’Android.

Android existe depuis 2007 et pourtant l’autonomie n’est toujours pas son point fort. Du côté de la concurrence, iOS s’en sort probablement mieux pour ce qui est de la veille. En revanche, les deux systèmes font peu ou prou jeu égal à utilisation similaire. Google essaie d’enrayer le problème sur les deux fronts depuis plusieurs années déjà. Voici quelques exemples qui montrent que depuis Android 5.0 (Lollipop), c’est une véritable sujet de fond pour la multinationale de Mountain View.

Android 5.0 : l’arrivée des « Job Schedulers »

Sur Android Lollipop, de nombreux utilisateurs ont été frustrés de ne pas connaître un gain d’autonomie spectaculaire. Google avait peut-être survendu sa solution de l’époque qui était pourtant intéressante. Jusqu’alors dès qu’une tâche avait besoin de s’exécuter, elle réveillait alors le terminal. Or ce type d’opération est très coûteux, notamment en ce qui concerne la pile réseau. En effet, dès que l’antenne du téléphone est allumée, elle mettra de longues secondes avant de repasser en veille.

L’idée d’Android 5.0 est de permettre aux tâches de s’exécuter par groupes, de telle sorte à éviter les réveils incessants. C’est par ailleurs le système qui a désormais la main sur ces réveils et non plus chaque application de son côté.

Android 6.0 : Doze, doz…, do…, d…

La fonctionnalité Doze sur Marshmallow

En passant sur Marshmallow, Google a fait le même constat que ses utilisateurs : l’autonomie en veille était exécrable. Il suffisait de laisser allumé son téléphone ou sa tablette la nuit et elle perdait alors une quantité importante de batterie, sans pour autant avoir interagit avec. Comme indiqué sur Android 5.0, n’importe quelle application pouvait décider de réveiller le téléphone. L’idée de Doze est d’opter pour une stratégie agressive de gestion des différents composants.

Depuis Marshmallow, dès que votre terminal passe en veille pendant de longues minutes, le système rentre dans un état de sommeil profond où il ne se réveille qu’à des intervalles de plus en plus espacés. Vous avez probablement remarqué que dès qu’un terminal se réveille après un sommeil profond, il se mettait à recevoir une quantité impressionnante de notifications.

C’est grâce à la fonctionnalité nommée Doze que cela est rendu possible. Rassurez-vous toutefois, les événements urgents tels que les réveils ou les appels peuvent contourner ce mécanisme. Par ailleurs, des optimisations sont réalisées sur les applications en arrière-plan dès que le terminal n’est plus alimenté par le secteur.

Android 7.0 : Doze on the go

Doze offre une économie notable de batterie lorsque le terminal est en veille depuis plusieurs minutes/heures. Les smartphones ne sont que peu concernés par cette fonctionnalité, puisque les utilisateurs ont tendance à réveiller très régulièrement leur téléphone. Sur Android Nougat, Doze est amélioré pour que ce cas de figure soit pris en compte. Désormais Doze rentre en fonction dès que l’écran est éteint et que le smartphone s’aperçoit être dans un état adéquat (dans une poche par exemple).

En plus de Doze on the go, Google a commencé un travail de fond sur l’amélioration de l’autonomie : le projet Svelte. Depuis ses toutes premières versions, Android envoie régulièrement des messages indiquants des changements d’état : une photo a été prise, le secteur est débranché, le téléphone sort de veille… Les différentes applications peuvent s’inscrire pour recevoir un message en particulier et ainsi exécuter un comportement pertinent lorsqu’elles ne sont pas visibles au premier plan. C’est de cette manière que les fonctions de type Instant Uploads fonctionnent. Sur Android N, il n’est plus possible pour les tâches d’arrière-plan de s’abonner directement à certains de ces messages, notamment en ce qui concerne la prise de photos ou le changement de connectivité (WiFi, mode avion, réseau mobile…).

A la place, Google fournit un mécanisme proposant le même résultat aux utilisateurs. Le principe est d’utiliser un canal de communication dont le système est maître (les fameux JobScheduler d’Android 5.0). La notification aux applications ne sera envoyée que lorsque l’OS l’aura décidé. Derrière cette décision, les optimisations sont nombreuses : beaucoup moins de mémoire vive consommée et une fluidité accrue au rendez-vous. La raison est simple : jusqu’à présent Android essayait de délivrer le message aux différentes applications en même temps. Chacune dans son coin exécutait son bout de code, sans toutefois se préoccuper des lenteurs remarquées par les utilisateurs.

Android O aura la peau des services en tâche de fond

Android est un système qui se montre très souple. Il est par exemple possible d’exécuter du code sans pour autant que l’application ne soit visible pour l’utilisateur. Cela commence à agacer Google qui a identifié ces services comme consommateurs de batterie. En effet, ils ont tendance à vouloir trop souvent accéder aux capteurs et ne pas permettre une mise à veille des dits composants. Sur Android O, le mot d’ordre est simple : ces fameux services seront bridés afin que l’autonomie puisse s’améliorer. Un casse tête pour les développeurs, mais une différence notable pour les utilisateurs.

Android O : c’est la fin de l’open bar

Sur Android O, le mécanisme visant à limiter le nombre de messages système ouverts à tous se réduit considérablement. Alors qu’il n’y en avait qu’une poignée sur Android Nougat, Google a passé à la moulinette tous les messages qui pouvaient être optimisés. La modification devrait être perceptible pour les utilisateurs autant au niveau de la fluidité, que de la consommation mémoire.

Dans un langage plus technique, Google ne permet plus aux services ou plus généralement aux tâches en arrière-plan d’intercepter les broadcasts implicites. Il ne sera possible de s’inscrire qu’aux broadcasts explicites et certains broadcasts implicites (le terminal a démarré, a changé de langue…).

En revanche, les applications au premier plan pourront toujours librement accéder à ces messages, même si l’intérêt est moindre. Enfin Android va se montrer plus agressif avec les services tournant en tâche de fond. L’idée de Google est d’inciter au maximum l’utilisation des JobSchedulers qui sont appelés au moment le plus opportun par le système.

Android O : des coordonnées GPS toujours aussi précises, mais moins régulières

Le premier fix du GPS consomme beaucoup de batterie

Pour obtenir la position d’un terminal, il existe de nombreux capteurs : le GPS, le WiFi, la puce réseau… Ces composants sont de véritables gouffres à batterie lorsque les conditions ne sont pas optimales (sous un tunnel ou dans un bâtiment notamment).

Sur Android O, les applications qui s’exécutent en tâche de fond sont dans le viseur de Google. Sur ces dernières, les positions GPS seront envoyées moins régulièrement (quelques fois par heure uniquement) afin que la batterie soit moins sollicitée, mais les données resteront toujours aussi exactes. En revanche, les applications qui sont visibles par l’utilisateur (au premier plan, ou via un notification) continueront de recevoir les positions au même rythme que sur Android 7.1. Concrètement vous ne devriez voir aucun changement au quotidien, si ce n’est une autonomie améliorée.

En même temps, le fused provider (agrégat des différents capteurs) sera optimisé ; Google incite d’ailleurs les développeurs à le privilégier pour obtenir la position de l’utilisateur. Enfin le mécanisme dit de geofencing (savoir lorsqu’un téléphone rentre dans une zone définie) est beaucoup moins consommateur qu’auparavant. Google parle d’économies de l’ordre 10 fois moins. Mais bonne nouvelle, cela concerne également les précédentes versions d’Android !

Android O : plus de GPS en WiFi

Sur Android O, le GPS est désactivé lorsque le WiFi est connecté

Par ailleurs, dès que vous serez connectés à un point d’accès WiFi, les capteurs de géolocalisation ne seront plus utilisés. En effet l’adresse IP du hotspot fournit déjà une position. Si elle est pertinente, Android ne tentera pas d’obtenir des coordonnées GPS similaires.

Android O : un écran de gestion de la batterie plus compréhensible

L’écran de gestion de la batterie dans les Paramètres est très utile, puisqu’il permet d’identifier quelle application ou composant système se révèle être consommateur de batterie. Ce système a été amélioré au fur et à mesure des versions, mais qui est capable aujourd’hui de savoir ce à quoi correspond réellement les « Play Services”, l’écran ou encore le “système Android” ?

Sur Android O, l’accent est porté sur la compréhension des données pour tous et non pour les concepteurs d’applications ou du terminal. C’est ainsi qu’il sera plus facile de distinguer quelles applications consomment le plus au premier plan et en tâche de fond.

L’écran de gestion de la batterie sur Android O

L’optimisation de l’autonomie d’un système d’exploitation est un véritable casse tête pour son créateur, puisqu’il consiste à fournir des fonctionnalités équivalentes, tout en essayant de grapiller ça-et-là des précieuses secondes des batteries.