Wear OS améliore l'autonomie de la batterie en suivant l'utilisation de la mémoire. Les cadrans qui utilisent le Watch Face Format 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 Watch Face Format, le système procède comme suit :
- Décompressez l'image ou la police.
- Vérifiez si les optimisations suivantes s'appliquent :
- Redimensionner pour mieux s'adapter à l'écran
- Recadrer les pixels transparents
- Sous-échantillonnage au format RGB565, sans perte de fidélité
En fonction du cadre de sélection obtenu, 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 en mode interactif, le système additionne les valeurs suivantes :
- Taille non traitée des polices vectorielles
- Utilisation estimée de la police par défaut du système
- La taille totale des images et des polices bitmap après recadrage, redimensionnement et reformatage est appliquée.
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 ambiant et calques
Le système suppose que le mode Veille utilise jusqu'à trois calques en plein écran, dont deux sont statiques. Les couches incluent :
- L'arrière-plan du cadran. Le système considère qu'il s'agit d'une seule image, quel que soit le nombre d'images qui composent l'arrière-plan.
- Pièces mobiles telles que les mains, les affichages numériques ou les éléments dynamiques
- Éléments restants du fichier XML source.
Les grandes polices bitmap utilisent souvent le plus de mémoire en mode Veille.
Méthodes pour 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 conservez la position du cadre de sélection. Par exemple, pour animer un cercle sur votre cadran, changez sa couleur au lieu de le faire rouler.
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 faites-y référence plusieurs fois.
Afficher la progression à l'aide d'arcs
Pour simuler une barre de progression qui se termine au bout d'une minute ou après une heure, n'utilisez pas 60 images. Utilisez un objet Arc avec une expression contrôlant sa longueur, comme indiqué ici :
<PartDraw angle="0" width="400" height="400" name="ProgressBar" pivotX="0.5" pivotY="0.5" x="25" y="25"> <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="#654456" thickness="10" /> </Arc> </PartDraw>
Pour afficher une ligne non continue, par exemple pour obtenir un style de montre numérique rétro, utilisez une propriété tiret pour un objet Stroke ou une superposition d'image de masque semi-transparent.
Placer les aiguilles et les complications de la montre à la fin du fichier source
Les nœuds XML sont dessinés dans l'ordre indiqué dans le code 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 du 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.