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

Pour offrir la meilleure autonomie de batterie possible aux appareils Wear OS, le système effectue un calcul de l'utilisation de la mémoire. Conformément aux Consignes relatives à la qualité des applications Wear OS, les cadrans qui utilisent le format de cadran limitent la quantité de mémoire qu'ils peuvent consommer, en fonction de l'état actuel de la montre:

  • En mode Veille, le cadran ne peut pas consommer plus de 10 Mo de mémoire.
  • En mode interactif, le cadran ne peut pas consommer plus de 100 Mo de mémoire.

Le système calcule l'utilisation de la mémoire d'un cadran

Pour calculer la taille occupée par une image ou une police bitmap dans un cadran qui utilise le format de cadran, le système effectue les étapes suivantes:

  1. Décompresse la police de l'image ou du bitmap.
  2. Examine la police de l'image ou du bitmap pour voir si elle peut être optimisée de l'une des manières suivantes :
    • Redimensionné pour mieux correspondre à la taille de l'écran.
    • Recadré pour supprimer les pixels entièrement transparents.
    • Rééchantillonné en RVB565, si cela peut être fait sans perte de fidélité.

En fonction de la zone de délimitation obtenue, le système calcule la taille de la police d'image ou de bitmap, en octets, comme l'une des valeurs suivantes:

  • Pour les images et les polices utilisant le format RGBA8888: \( 4 \times width \times height \)
  • Pour les images et les polices qui utilisent RGB565: \( 2 \times width \times height \)
  • Pour les images et les polices qui utilisent la configuration bitmap ALPHA_8 : \( width \times height \)

Mode interactif

Lors du calcul de l'utilisation de la mémoire pour le mode interactif, le système calcule la somme des éléments suivants:

  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 tout recadrage, redimensionnement ou reformatage appliqué.

Configurations

Pour les cadrans contenant des configurations, le système tente de calculer la taille totale des ressources utilisées dans les différentes configurations. Parfois, lorsqu'il existe un très grand nombre de combinaisons, le système surestime légèrement le nombre de ressources utilisées simultanément dans les différentes configurations.

Mode Veille et couches

Pour le mode Veille, le système suppose que la montre est affichée à l'aide de trois couches en plein écran, dont deux sont complètement statiques:

  1. Tout ce qui se trouve sous les éléments de la montre. La majeure partie du "corps" du cadran est composée dans cette couche. Le nombre d'images utilisées pour dessiner ce calque n'a pas d'importance. Le système le comptabilise comme une image plein écran.
  2. Toutes les aiguilles de la montre, l'affichage numérique ou les complications avec des liaisons de plate-forme qui sont affichées de manière dynamique.
  3. Tous les éléments listés après les aiguilles et les complications dans le fichier XML source.

En règle générale, l'utilisation de la mémoire en mode Veille provient principalement de polices bitmap, en particulier de grandes.

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

Suivre les suggestions de cette section vous permettra de créer un cadran dont l'utilisation de mémoire ne dépasse pas ces limites.

Recadrer et redimensionner les polices bitmap

Recadrez vos images et vos objets BitmapFont, puis redimensionnez-les pour les adapter à leur taille d'affichage.

Lorsque Wear OS dessine un cadran, toutes les images sont décompressées. Une image en plein écran principalement vierge peut consommer 3 Ko sur le disque, mais si elle est affichée sur un écran de 450 x 450 pixels, le système la décompresse, augmentant ainsi sa taille à 750 Ko ou plus en mémoire.

Utiliser des hauteurs de police bitmap cohérentes

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

Utiliser des tailles de cadre cohérentes dans les animations

Au lieu de déplacer une image sur un cadran, mettez à jour les éléments de l'image et conservez son cadre de délimitation au même endroit par rapport au cadran. Par exemple, si vous souhaitez animer un cercle sur votre cadran, envisagez de modifier la couleur d'un cercle au lieu de le faire rouler sur le cadran.

Cette technique réduit la taille de la zone de délimitation que le système calcule pour l'animation.

Dédupliquer les images

Si le cadran affiche plusieurs copies de la même image, n'incluez qu'une seule copie de cette image dans votre répertoire de ressources et référencez-la plusieurs fois.

Afficher la progression à l'aide d'arcs

Pour émuler une barre de progression qui se termine au bout d'une minute ou après une heure, n'utilisez pas 60 images distinctes. Créez plutôt un objet Arc contenant une expression contrôlant sa longueur, comme indiqué dans l'extrait de code suivant :

<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 dans lequel ils sont listés dans le fichier XML source. En plaçant les aiguilles et les complications de la montre à la fin du fichier, le système élimine 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