É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 particulièrement sur la consommation d'énergie de l'appareil, car le format de la montre est de petite taille et est conçu pour des interactions courtes.

Par rapport aux appareils mobiles plus grands, les appareils Wear OS ont des batteries plus petites, de sorte que la décharge de la batterie est plus perceptible. De plus, l'utilisateur a besoin de plus d'efforts pour recharger un appareil Wear OS 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 un 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:

  • La conception de votre application doit utiliser à bon escient le facteur de forme Wear OS. Il ne doit pas copier directement votre application mobile.
  • Utilisez votre application mobile existante pour vous aider dans certains cas d'utilisation. Par exemple, Internet et la synchronisation sur la montre sont coûteux. Déterminez si l'appareil mobile est capable d'effectuer le gros du travail et si l'appareil Wear OS reçoit des modifications dans les 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 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 et l'organisation des 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 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 l'exécution de votre application et décharger la batterie. Pour en savoir plus sur la manière dont des actions spécifiques sont réalisées, comme charger une application ou faire défiler une liste, consultez des conseils liés aux performances, comme le guide sur les performances de Compose sur Wear OS.

Surveiller l'utilisation de la batterie dans le 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 de votre ordinateur de développement:

adb shell dumpsys batterystats

Une bibliothèque GitHub dispose d'un analyseur de statistiques sur la batterie qui peut être exécuté avec cette commande.

Événements qui affectent l'autonomie de la batterie

Avant de penser à votre application en particulier, il est utile de penser de manière plus générale 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 décharge de la batterie dépend des appareils.

Événement Impact sur l'autonomie de la batterie Comment atténuer les effets
Accéder au réseau, y compris LTE et Wi-Fi Très élevé Différez l'accès non essentiel au réseau jusqu'à ce que l'appareil soit en charge.
Allumer l'écran et démarrer le mode interactif Élevé N'encouragez pas l'utilisateur à maintenir l'écran allumé plus longtemps que nécessaire. Fournissez une expérience qui utilise 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é Consultez des flux à l'aide de Jetpack Compose.
Accéder au capteur de fréquence cardiaque Medium Utilisez la durée d'éveil 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 le Bluetooth Medium Faites en sorte que les sessions soient courtes.
Maintenir un wakelock Medium Réduisez la création manuelle de wakelocks et utilisez WorkManager.

Réduire le temps d'écran

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

  • Verrouillage de l'écran:à éviter autant que possible. Pour effectuer un test, désactivez le mode Mode Always-on dans les paramètres système et vérifiez si l'écran s'éteint dans le délai imparti.
  • 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 une pause entre les boucles d'une durée au moins égale à celle de l'animation elle-même.
  • Temps d'éveil en mode Veille:permet d'activer le mode Always-on si nécessaire, par exemple pour les cas d'utilisation de remise en forme. Si votre application nécessite le mode Always-on, 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 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:

  • Limitez l'utilisation.
  • Regroupez toutes les opérations associées pour optimiser la durée d'inactivité du processus de votre application.

Réduire les wakelocks

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

Dans certains cas, l'acquisition d'un wakelock est autorisée, 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 lors de l'exécution de la tâche en arrière-plan.)

Batterie Historian vous permet de voir les occurrences individuelles de longs wakelocks, ainsi que des résumés du nombre total et de la durée des wakelocks en cours. Inspectez le nombre et la durée des wakelocks que votre application contient, puis comparez ces informations aux schémas d'utilisation interactifs de votre application:

  • Recherchez les wakelocks inattendus.
  • Si la durée est plus longue que prévu, déterminez si le travail est bloqué en fonction d'une dépendance quelconque, telle que la disponibilité du réseau.

Inspecter le processus d'inactivité de votre application

Considérez 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 est fermé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 ambiant.
  2. Recherchez tous 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 s'exécutent lorsque l'écran s'éteint, que l'appareil passe en mode ambiant 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 à un domaine. Pour une application multimédia, cela peut inclure des tâches telles que l'extraction de playlists, le téléchargement d'un élément multimédia spécifique, le démarrage 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 l'utilisation du processeur et la consommation d'énergie de votre application.

Analyser les jobs planifiés 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 pourrait décharger la batterie de l'appareil.

Utilisez Batterie Historian pour inspecter l'exécution des tâches planifiées, à la fois dans l'ensemble (Statistiques système > Statistiques Jobscheduler) et par application (Statistiques sur l'application > Tâche planifiée). Vérifiez le nombre total et la durée totale:

  • Si un job s'exécute très fréquemment, envisagez de réduire cette fréquence.
  • Vérifiez que la durée totale d'exécution correspond à vos attentes et n'est pas significativement plus longue.

Examinez également le graphique Battery Historian en examinant chaque entrée de 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 judicieuse.
  • Déterminez si les tâches sont exécutées 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 disposent de nombreux capteurs différents, comme le GPS. Dans la plupart des cas, utilisez les Services Santé sur Wear OS au lieu 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

Le résultat de cette commande est le suivant:

  • Enregistrement actuel et précédent des capteurs.
  • Configuration du capteur, y compris le traitement par lot si elle est définie.
  • 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 fermer l'application.
  2. Tapotez l'écran avec la paume de votre main. Cela l'éteint ou le met 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 une certaine puissance. En particulier, si vous utilisez cette API pour envoyer des données, votre application doit s'activer pour les recevoir. Par conséquent, soyez prudent dans votre utilisation de cette API.

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 le début d'une session d'entraînement.

    Ne transmettez que les changements d'état qui mettent à jour votre UI. Par exemple, si l'écran d'activité n'affiche que les "kilomètres parcourus" avec une décimale, n'envoyez pas de changement d'état à Wear OS chaque fois que l'utilisateur avance d'un autre compteur.

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 donne les résultats suivants:

  • RpcService:permet de voir la fréquence et les chemins d'accès 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 Services Santé pour optimiser l'utilisation des capteurs de votre application.

  • Pour ExerciseClient, utilisez Batterie Historian pour vérifier le comportement correct en mode Veille. Vérifiez que votre application ne se réveille pas plus souvent que toutes les minutes pour recevoir des données ExerciseUpdate.
  • Pour la surveillance de l'état de santé général tout au long de la journée, utilisez PassiveMonitoringClient, comme décrit dans le guide expliquant comment surveiller les 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, qui pourrait amener le système à planifier les 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 tâches pour votre carte ou votre complication lorsque l'utilisateur n'interagit pas avec elle.
  • Utilisez des approches orientées hors connexion.
  • Partagez une base de données unique pour votre application principale, vos cartes et vos complications. Cela permet également aux données de rester cohérentes sur toutes les surfaces d'interface utilisateur.