Optimiser l'utilisation de la mémoire pour votre cadran

Wear OS améliore l'autonomie de la batterie en suivant l'utilisation de la mémoire. Les cadrans qui utilisent le format de cadran sont soumis à des limites de mémoire, conformément aux Consignes relatives à la qualité des applications Wear OS:

  • Mode Veille: utilisation maximale de la mémoire de 10 Mo.
  • Mode interactif: utilisation maximale de la mémoire de 100 Mo.

Calcul de l'utilisation de la mémoire

Pour calculer l'utilisation de la mémoire pour une image ou une police bitmap dans un cadran à l'aide du format de cadran, le système procède comme suit:

  1. Décompressez l'image ou la police.
  2. Vérifiez si les optimisations suivantes s'appliquent :
    • Redimensionnement pour mieux s'adapter à l'écran
    • Recadrer des pixels transparents
    • Rééchantillonnage au format RGB565, sans perte de fidélité

En fonction de la zone de délimitation obtenue, la taille est calculée comme suit:

  • Pour les images et les polices utilisant RGBA8888: 4 x largeur x hauteur
  • Pour les images et les polices utilisant RGB565: 2 x largeur x hauteur
  • Pour les images et les polices utilisant la configuration bitmap ALPHA_8: largeur x hauteur

Mode interactif

Pour calculer l'utilisation de la mémoire pour le mode interactif, le système additionne les valeurs suivantes:

  1. Taille non traitée de toutes les polices vectorielles
  2. Utilisation estimée de la police par défaut du système
  3. Taille totale des images et des polices bitmap après le recadrage, la redimensionnement et le reformatage

Configurations

Pour les cadrans avec des configurations, le système tente de calculer la taille totale des ressources du cadran pour différentes configurations. Si le nombre de combinaisons est très élevé, le système peut surestimer le nombre de ressources utilisées simultanément.

Mode Veille et couches

Le système suppose que le mode Veille utilise jusqu'à trois calques plein écran, dont deux sont statiques. Les couches incluent les suivantes:

  1. Arrière-plan du cadran. Le système considère cela comme une seule image, quel que soit le nombre d'images de l'arrière-plan.
  2. des pièces mobiles comme des mains, des écrans numériques ou des éléments dynamiques ;
  3. Éléments restants du fichier XML source.

Les polices bitmap de grande taille consomment souvent la plus grande quantité de mémoire en mode Veille.

Méthodes permettant de réduire l'utilisation de la mémoire

Utilisez les optimisations suivantes pour réduire l'utilisation de la mémoire.

Recadrer et redimensionner les polices bitmap

Recadrez vos images et vos objets BitmapFont pour les adapter à la taille d'affichage.

Wear OS dessine les cadrans avec toutes les images décompressées. Une image en plein écran principalement vierge peut consommer 3 Ko sur le disque, mais 750 Ko ou plus sur un écran de 450 x 450 pixels.

Utiliser des hauteurs de police bitmap cohérentes

Lorsque vous utilisez un élément BitmapFont, assurez-vous que toutes les images d'un personnage ont la même hauteur. De même, assurez-vous que toutes les images contenant des mots ont la même hauteur.

Utiliser des tailles de frame cohérentes dans les animations

Au lieu de déplacer une image sur un cadran, mettez à jour les éléments de l'image et maintenez la position du cadre de délimitation fixe. Par exemple, pour animer un cercle sur votre cadran, modifiez sa couleur au lieu de le faire défiler.

Cette technique réduit la taille du cadre de délimitation calculé de l'animation.

Dédupliquer les images

Pour afficher une image plusieurs fois, n'incluez qu'une seule ressource d'image et référencez-la plusieurs fois.

Afficher la progression à l'aide d'arcs

Pour simuler la fin d'une barre de progression au bout d'une minute ou d'une heure, n'utilisez pas 60 images. Utilisez un objet Arc avec une expression contrôlant sa longueur, comme illustré ci-dessous:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

Pour afficher une ligne non continue, par exemple pour obtenir un style de montre numérique rétro, utilisez soit une propriété tiret pour un objet Stroke, soit une superposition d'image de masque semi-transparent.

Placer les aiguilles et les complications à la fin du fichier source

Les nœuds XML sont dessinés dans l'ordre indiqué dans le fichier XML source. En plaçant les aiguilles et les complications à la fin, vous permettez au système d'éliminer une couche entière du calcul de la mémoire en mode Veille.

Évaluer l'utilisation de la mémoire de votre cadran

Pour mesurer l'utilisation de la mémoire de votre cadran, utilisez l'outil d'évaluation de l'espace mémoire utilisé, disponible dans le dépôt watchface sur GitHub.

  • Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé.
  • Arc
  • Line
  • Rectangle