Économiser l'énergie et la batterie

Mots clés: Wear OS, alimentation, batterie, performances

L'efficacité énergétique est particulièrement importante sur Wear OS. Les principes de conception de Wear OS se concentrent principalement sur la consommation d'énergie de l'appareil, car la montre est un petit facteur de forme conçu pour des interactions courtes.

Par rapport aux appareils mobiles plus grands, les appareils Wear OS ont des batteries plus petites. Par conséquent, toute décharge de la batterie est plus visible. De plus, il faut plus d'efforts pour charger un appareil Wear OS qu'un appareil mobile. Bien que les utilisateurs puissent recharger leurs appareils mobiles à différents intervalles tout au long de la journée, ils doivent détacher un appareil Wear OS de leur corps avant de le recharger.

Pour améliorer l'efficacité énergétique de votre application, suivez ces bonnes pratiques de conception:

  • La conception de votre application doit exploiter pleinement le facteur de forme Wear OS. Il ne doit pas copier directement votre application mobile.
  • Utilisez votre application mobile existante pour répondre à certains cas d'utilisation. Par exemple, l'accès à Internet et la synchronisation sur la montre sont coûteux. Demandez-vous si l'appareil mobile peut effectuer les tâches lourdes et si l'appareil Wear OS reçoit les modifications de données.
  • Concevez vos cas d'utilisation pour des interactions plus courtes.
  • Réfléchissez aux événements Wear OS que vous utilisez et à la fréquence à laquelle ils se produisent.
  • Dans la mesure du possible, différez le travail de votre application jusqu'à ce que la montre soit en charge. Cela s'applique particulièrement aux tâches gourmandes en données, telles que la synchronisation de données et l'organisation de bases de données.

    Si l'appareil est en charge et dispose d'une connexion Wi-Fi, planifiez des tâches pour précharger les données, les images et les mises à jour que l'utilisateur souhaite probablement voir dans votre application.

Ce guide d'alimentation vous aide à comprendre quand et comment le système exécute votre application, et comment limiter son temps d'exécution et l'épuisement de la batterie. Pour en savoir plus sur la manière dont certaines actions sont effectuées (telles que le chargement d'une application ou le défilement d'une liste), consultez les conseils liés aux performances, comme le guide des performances de Compose sur Wear OS.

Surveiller l'utilisation de la batterie au fil du temps

Pour analyser les statistiques de la batterie d'un appareil Wear OS qui exécute votre application, saisissez la commande suivante dans une fenêtre de terminal sur votre ordinateur de développement:

adb shell dumpsys batterystats

Une bibliothèque sur GitHub propose un analyseur des statistiques de la batterie, qui peut être utile à exécuter avec cette commande.

Événements affectant l'autonomie de la batterie

Avant de réfléchir spécifiquement à votre application, il est utile de réfléchir plus généralement aux événements qui consomment de l'énergie sur un appareil Wear OS.

Le tableau suivant indique l'impact relatif sur l'autonomie de la batterie de plusieurs événements courants dans les applications Wear OS. La consommation d'énergie exacte varie selon les appareils.

Événement Impact sur l'autonomie de la batterie Comment atténuer le problème
Accéder au réseau, y compris au réseau LTE et au Wi-Fi Très élevé Différez l'accès au réseau non essentiel jusqu'à ce que l'appareil soit en charge.
Allumer l'écran et démarrer le mode interactif Élevée N'encouragez pas l'utilisateur à laisser l'écran allumé plus longtemps que nécessaire. Proposez une expérience qui utilise le mode Always-on, également appelé mode Veille.
Accéder au capteur GPS Élevée Dans la mesure du possible, attendez que l'utilisateur demande l'accès au GPS.
Maintenir une utilisation élevée du processeur Élevée Consommation de flux à l'aide de Jetpack Compose
Accéder au capteur de fréquence cardiaque Moyenne Utilisez le temps d'activation du processeur lorsque vous recevez des rappels de l'API du capteur, par exemple lorsque vous utilisez Services Santé sur Wear OS.
Accéder à un autre appareil via Bluetooth Moyenne Réduisez la durée des sessions.
Maintenir un wakelock Moyenne Réduisez la création manuelle de wakelocks et utilisez WorkManager.

Réduire le temps d'utilisation de l'écran

Dans votre application Wear OS, respectez les principes d'utilisation des écrans suivants:

  • Verrouillage de l'écran:évitez-le autant que possible. Pour effectuer le test, désactivez l'option Affichage permanent dans les paramètres système, puis observez si l'écran s'éteint au bout du délai.
  • Animations:réduisez les animations élaborées et concentrez-vous plutôt sur de brèves transitions pour un aspect plus professionnel. En particulier, évitez les animations et les boucles de longue durée. Si une boucle est requise, ajoutez une pause entre les boucles qui est au moins aussi longue que l'animation elle-même.
  • Temps d'activation en mode Veille:prenez en charge le mode Always-on si nécessaire, par exemple pour les cas d'utilisation de fitness. Si votre application nécessite une fonctionnalité toujours activée, vérifiez qu'elle effectue les opérations suivantes lorsque l'appareil est en mode Veille:

    • Réduit le pourcentage de l'écran de l'appareil qui est éclairé.
    • ne diffuse pas d'animations ;
    • Ne met pas à jour le contenu de l'écran, sauf lors d'un rappel onAmbientUpdate().

Réduire l'utilisation du processeur

Dans votre application Wear OS, suivez ces principes d'utilisation du processeur:

  • Utilisez-le de manière ponctuelle.
  • Effectuez des opérations par lot pour maximiser le temps d'inactivité du processus de votre application.

Réduire les wakelocks

Dans la plupart des cas, évitez toute opération qui empêche votre application de passer en veille, comme les wakelocks. Par exemple, dans les applications de santé et de remise en forme, les entraînements de longue durée n'ont pas besoin d'un wakelock. Utilisez le temps d'activation du processeur lorsque vous recevez des rappels de l'API du capteur, par exemple lorsque vous utilisez les Services Santé sur Wear OS.

Dans certains cas, il est acceptable d'acquérir un wakelock, par exemple lorsque votre application effectue l'une des opérations suivantes:

  • Lit des contenus multimédias en arrière-plan.
  • Utilise WorkManager ou JobScheduler. (Le système maintient un wakelock en votre nom lorsque vous exécutez la tâche en arrière-plan.)

Battery Historian vous permet de voir les occurrences individuelles de wakelocks de longue durée, ainsi que des récapitulatifs du nombre total et de la durée des wakelocks maintenus. Inspectez le nombre et la durée des wakelocks que votre application détient, et comparez ces informations aux modèles d'utilisation interactifs de votre application:

  • Recherchez les wakelocks inattendus.
  • Si la durée est plus longue que prévu, vérifiez si le travail est bloqué par une dépendance, telle que la disponibilité du réseau.

Inspecter le processus d'inactivité de votre application

Réfléchissez à ce que fait l'application active lorsque des événements clés de l'appareil se produisent, par exemple:

  • L'écran s'éteint et l'appareil passe en mode Veille.
  • L'application est fermée par balayage.

Pour analyser l'activité de l'application, utilisez les outils présentés dans les sections suivantes.

Profileur d'alimentation

Pour accéder au profileur d'alimentation dans le menu Android Studio, sélectionnez View > Tool Windows > Profiler (Vue > Fenêtres d'outils > Profileur) :

  1. Examinez la trace système lorsque l'écran s'éteint et que l'appareil passe en mode Veille.
  2. Recherchez toute tâche en cours et le niveau d'utilisation du processeur de l'appareil.

Perfetto

Perfetto vous permet d'enregistrer une trace, puis d'inspecter votre application pour voir si des threads effectuent des tâches lorsque l'écran s'éteint, que l'appareil passe en mode Veille ou que l'utilisateur ignore l'activité de votre application.

Définissez des événements personnalisés pour marquer les événements importants de votre application, y compris les événements spécifiques au domaine. Pour une application multimédia, cela inclut des tâches telles que l'extraction de playlists, le téléchargement d'un élément multimédia spécifique, le démarrage de la lecture et l'arrêt de la lecture. En définissant ces événements, vous pouvez les voir dans Perfetto et comparer leur synchronisation avec l'utilisation du processeur et de l'alimentation de votre application.

Analyser les tâches planifiées de votre application

Les tâches planifiées, à l'aide de WorkManager, vous permettent d'effectuer des tâches en arrière-plan dans votre application. Bien que certaines tâches en arrière-plan doivent être périodiques, n'exécutez pas de tâches trop fréquemment ni pendant une longue durée, car cela peut décharger la batterie de l'appareil.

Utilisez Battery Historian pour inspecter l'exécution des tâches planifiées, à la fois de manière globale (System stats > Jobscheduler stats) et par application (App stats > Scheduled job). Vérifiez le nombre total et la durée totale:

  • Si une tâche s'exécute très fréquemment, envisagez de réduire cette fréquence.
  • Vérifiez que le temps d'exécution total correspond à ce que vous attendez et qu'il n'est pas beaucoup plus long.

Examinez également le graphique Battery Historian, en examinant chaque entrée JobScheduler. Lorsque vous maintenez le pointeur sur une entrée spécifique, Battery Historian affiche le propriétaire de la tâche en cours d'exécution. Réfléchissez aux points suivants :

  • Pour votre application, la durée d'exécution doit être logique.
  • Déterminez si les tâches se produisent pendant l'exécution de votre application ou si elles représentent un travail en arrière-plan périodique.

Capteurs

Les appareils Wear OS sont équipés de nombreux capteurs différents, comme le GPS. Dans la plupart des cas, utilisez les Services Santé sur Wear OS plutôt que d'interagir directement avec SensorManager. Dans de nombreux cas, Services Santé regroupe intelligemment les données pour améliorer les performances de la batterie.

Pour analyser l'utilisation des capteurs dans votre application, exécutez la commande suivante dans une fenêtre de terminal sur votre ordinateur de développement:

adb shell dumpsys sensorservice

Les résultats de cette commande affichent les éléments suivants:

  • Enregistrements de capteurs actuels et précédents.
  • Configuration du capteur, y compris le traitement par lot si défini.
  • Données échantillonnées récemment.

Tester la désinscription des capteurs

Pour vérifier si votre application arrête d'extraire les données des capteurs comme prévu, testez les scénarios suivants:

  1. Balayez l'écran pour fermer votre application.
  2. Appuyez sur l'écran avec la paume de votre main. L'écran est alors éteint ou placé en mode Veille.

Utilisez la commande ADB de la section précédente pour vérifier si le capteur s'affiche correctement comme non enregistré.

Couche de données

Lorsque vous utilisez l'API Data Layer, chaque transmission consomme de l'énergie. Plus précisément, si vous utilisez cette API pour envoyer des données, votre application doit se réveiller pour les recevoir. Pour ces raisons, utilisez cette API avec parcimonie.

Voici quelques bonnes pratiques supplémentaires pour utiliser l'API Data Layer:

  • Attendez que votre application soit active avant de configurer un écouteur à l'aide de WearableListenerService.
  • Transmettez les modifications d'état au lieu de configurer des mises à jour rapides. Ces changements d'état permettent à l'appareil Wear OS d'effectuer des calculs de données locaux, par exemple au début d'une séance d'entraînement.

    Transmettez uniquement les modifications d'état qui mettent à jour votre UI. Par exemple, si votre écran d'activité n'affiche que "Kilomètres parcourus" à une décimale, n'envoyez pas de changement d'état à Wear OS chaque fois que l'utilisateur avance d'un mètre.

Pour analyser l'utilisation de l'API Data Layer dans votre application, exécutez la commande suivante dans une fenêtre de terminal sur votre ordinateur de développement:

adb shell dumpsys activity service WearableService

Les résultats de cette commande incluent les éléments suivants:

  • RpcService:vous permet de voir à quelle fréquence et quels chemins sont appelés à l'aide de MessageClient.
  • DataService:vous permet de voir la fréquence à laquelle les éléments de données sont définis à l'aide de DataClient.

Applications de santé et remise en forme

Si vous gérez une application de santé et de remise en forme, utilisez les Services Santé pour optimiser l'utilisation des capteurs par votre application.

Cartes et complications

Si votre application est compatible avec une carte ou une complication, suivez ces bonnes pratiques:

  • Désactivez l'actualisation automatique ou augmentez la fréquence d'actualisation à deux heures ou plus.
  • Utilisez Firebase Cloud Messaging (FCM) ou des tâches planifiées de manière appropriée pour envoyer des mises à jour de données. Veillez à éviter un rythme de mises à jour rapide, car cela peut entraîner la planification de tâches répétées plus rapidement que l'utilisateur ou la plate-forme ne peut accéder aux données nécessaires pour effectuer ces tâches.
  • Ne planifiez pas de travail pour votre carte ou votre complication lorsque l'utilisateur n'interagit pas avec elle.
  • Utilisez des approches axées sur le hors connexion.
  • Partagez une seule base de données entre votre application principale, vos cartes et vos complications. Cela permet également de maintenir la cohérence des données sur les surfaces de l'interface utilisateur.