Économiser l'énergie et la batterie

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

Par rapport aux appareils mobiles plus grands, la batterie des appareils Wear OS est plus petite. La décharge de la batterie est donc plus visible. De plus, le chargement d'un appareil Wear OS demande à l'utilisateur plus d'efforts qu'un appareil mobile. Bien que les utilisateurs puissent recharger leurs appareils mobiles à différents intervalles au cours de la journée, ils doivent détacher l'appareil Wear OS de leur corps avant de le charger.

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

  • Le facteur de forme Wear OS doit être adapté à la conception de votre application. Elle ne doit pas copier directement votre application mobile.
  • Utilisez votre application mobile existante pour certains cas d'utilisation. Par exemple, Internet et la synchronisation sur la montre sont coûteux. Déterminez si l'appareil mobile peut effectuer les tâches les plus 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 à leur fréquence.
  • Dans la mesure du possible, différez le travail de l'application jusqu'à ce que la montre soit en charge. Cela s'applique particulièrement aux tâches qui consomment beaucoup de données, telles que la synchronisation 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 de préchargement des données, des images et des mises à jour que l'utilisateur souhaitera probablement voir dans votre application.

Ce guide de l'alimentation vous aide à comprendre quand et comment le système exécute votre application, et comment limiter l'exécution de votre application et la décharge de la batterie. Pour en savoir plus sur la façon dont des actions particulières sont réalisées, comme charger une application ou faire défiler une liste, consultez les conseils sur les performances, tels que 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 de statistiques sur la batterie, qu'il peut être utile d'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 montre l'effet relatif sur l'autonomie de la batterie pour 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 Mesures d'atténuation
Accéder au réseau, y compris LTE et 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 lancer le mode interactif Élevé N'encouragez pas l'utilisateur à garder l'écran allumé plus longtemps que nécessaire. Proposez une expérience utilisant le mode Always-on, également appelé mode Veille.
Accéder au capteur GPS Élevé Si possible, attendez que l'utilisateur demande l'accès au GPS.
Maintenir une utilisation élevée du processeur Élevé Les flux de consommation à l'aide de Jetpack Compose.
Accéder au capteur de fréquence cardiaque Medium Utilisez le temps d'éveil du processeur lors de la réception de rappels de l'API du capteur, par exemple lorsque vous utilisez Services Santé sur Wear OS.
Accéder à un autre appareil via le Bluetooth Medium Faites des sessions courtes.
Maintenir un wakelock Medium Réduisez la création manuelle de wakelocks et utilisez WorkManager.

Réduire le temps d'utilisation

Dans votre application Wear OS, suivez ces principes d'utilisation de l'écran:

  • Verrouillages de l'écran:évitez autant que possible. Pour effectuer un test, désactivez l'option Mode Always-on dans les paramètres système et vérifiez si l'écran s'éteint pendant le délai d'inactivité.
  • Animations:minimisez les animations élaborées et concentrez-vous plutôt sur de brèves transitions pour un rendu plus professionnel. En particulier, évitez les animations et les boucles de longue durée. Si une boucle est requise, ajoutez entre les boucles une pause d'au moins autant que l'animation elle-même.
  • Temps d'éveil en mode Veille:activez le mode Always-on si nécessaire, par exemple pour les cas d'utilisation de remise en forme. Si votre application nécessite une activation permanente, vérifiez qu'elle effectue les opérations suivantes lorsque l'appareil est en mode Veille:

    • Réduit le pourcentage d'éclairage de l'écran de l'appareil.
    • N'affiche pas les 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:

  • Faites en sorte que l'utilisation soit courte.
  • Regroupez toutes les opérations associées pour maximiser la durée d'inactivité du processus de votre application.

Minimiser les wakelocks

Dans la plupart des cas, évitez les opérations qui empêchent votre application de se mettre en veille, telles que 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 de wakelock. Utilisez le temps d'éveil du processeur lors de la réception de rappels de l'API du capteur, par exemple lorsque vous utilisez Services Santé sur Wear OS.

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

  • Lit les contenus multimédias en arrière-plan.
  • Utilise WorkManager ou JobScheduler (Le système maintient un wakelock en votre nom lors de l'exécution de la tâche en arrière-plan.)

Batterie Historian vous permet d'afficher des occurrences individuelles de wakelocks longs, ainsi que des résumés du nombre total et de la durée des wakelocks conservés. Inspectez le nombre et la durée des wakelocks contenus par votre application, puis comparez ces informations aux schémas d'utilisation interactive de votre application:

  • Recherchez des wakelocks inattendus.
  • Si la durée est plus longue que prévu, déterminez si la tâche est bloquée en fonction d'une dépendance, telle que la disponibilité du réseau.

Inspecter la manière dont votre application devient inactive

Tenez compte de ce que fait l'application active lorsque des événements clés sur l'appareil se produisent, par exemple:

  • L'écran s'éteint et l'appareil passe en mode Veille.
  • L'application peut être masquée en balayant l'écran.

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

Profileur d'énergie

Le Profileur d'énergie est accessible dans le menu Android Studio en sélectionnant View > Tool Windows > Profiler (Vue > Fenêtres d'outils > Profileur) :

  1. Inspectez la trace système lorsque l'écran s'éteint et que l'appareil passe en mode Veille.
  2. Recherchez les travaux 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 une tâche lorsque l'écran s'éteint, lorsque l'appareil passe en mode Veille ou lorsque 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 des événements spécifiques à un domaine. Pour une application multimédia, cela peut inclure des tâches telles que la récupération de playlists, le téléchargement d'un élément multimédia spécifique, le lancement et l'arrêt de la lecture. En définissant ces événements, vous pouvez les voir dans Perfetto et comparer leur durée avec la consommation de processeur et d'énergie 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 ou pendant une longue durée, car cela peut décharger la batterie de l'appareil.

Utilisez Batterie Historian pour inspecter l'exécution des tâches planifiées, à la fois (Statistiques système > Statistiques Jobscheduler) et par application (Statistiques de l'application > Tâche planifiée). 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 la durée d'exécution totale correspond à vos attentes et n'est pas significativement plus longue.

Examinez également le graphique Battery Historian et examinez chaque entrée JobScheduler. Lorsque vous maintenez le pointeur sur une entrée particulière, 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 avoir un sens.
  • Déterminez si les tâches s'exécutent pendant l'exécution de votre application ou si elles représentent des tâches périodiques en arrière-plan.

Capteurs

Les appareils Wear OS possèdent de nombreux capteurs différents, comme le GPS. Dans la plupart des cas, utilisez Services Santé sur Wear OS au lieu d'interagir directement avec SensorManager. Dans de nombreux cas, Services Santé regroupe des données de manière intelligente 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

Cette commande affiche les résultats suivants:

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

Tester la désinscription des capteurs

Pour vérifier si votre application arrête de récupérer les données des capteurs comme prévu, testez les scénarios suivants:

  1. Balayez l'écran pour ignorer votre application.
  2. Tapotez sur l'écran avec la paume de votre main. Cela éteint l'écran ou le place en mode Veille.

Utilisez la commande ADB de la section précédente pour vérifier si le capteur apparaît correctement comme non enregistré.

Couche de données

Lorsque vous utilisez l'API Data Layer, chaque transmission consomme de l'énergie. En particulier, si vous utilisez cette API pour envoyer des données, votre application doit s'activer pour les recevoir. C'est pourquoi nous vous recommandons d'utiliser cette API avec prudence.

Voici quelques bonnes pratiques supplémentaires concernant l'utilisation de l'API Data Layer:

  • Attendez que votre application soit active avant de configurer un écouteur à l'aide de WearableListenerService.
  • Transmettre les changements 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 quand une session d'entraînement a commencé.

    Ne transmettez que les changements d'état qui mettent à jour votre UI. Par exemple, si l'écran de l'activité n'affiche que le nombre de kilomètres parcourus à une décimale, n'envoyez pas de changement d'état à Wear OS chaque fois que l'utilisateur avance d'un autre 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 de votre ordinateur de développement:

adb shell dumpsys activity service WearableService

Cette commande permet d'obtenir les résultats suivants:

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

Applis 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.

  • Pour ExerciseClient, utilisez Battery Historian afin de vérifier le comportement correct en mode Veille. Vérifiez que votre application ne se réveille pas plus souvent que toutes les minutes ou deux pour recevoir des données ExerciseUpdate.
  • Pour la surveillance générale de l'état de santé tout au long de la journée, utilisez PassiveMonitoringClient, comme décrit dans le guide sur la surveillance des données de santé et de remise en forme en arrière-plan.

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 correctement planifiées pour envoyer des mises à jour de données. Veillez à éviter un taux de mises à jour rapide, car cela peut amener le système à planifier des tâches répétées à un rythme plus court que celui permettant à l'utilisateur ou à la plate-forme d'accéder aux données nécessaires pour effectuer ce travail.
  • Ne planifiez pas de tâche pour votre carte ou votre complication lorsque l'utilisateur n'interagit pas avec elles.
  • Utilisez des approches orientées hors connexion.
  • Partagez une base de données unique entre votre application principale, vos cartes et vos complications. Cela permet également aux données de rester cohérentes entre les surfaces d'interface utilisateur.