Wear OS mejora la duración de batería haciendo un seguimiento del uso de la memoria. Las caras de reloj que usan el Formato de Caras de Relojes tienen límites de memoria, según los lineamientos de calidad de apps para Wear OS:
- Modo ambiente: 10 MB de uso máximo de memoria
- Modo interactivo: 100 MB de uso máximo de memoria
Cálculo del uso de memoria
Para calcular el uso de memoria de una imagen o una fuente de mapa de bits en una cara de reloj con el Formato de Caras de Relojes, el sistema hace lo siguiente:
- Descomprime la imagen o la fuente.
- Verifica si se aplican las siguientes optimizaciones:
- Cambio de tamaño para que se ajuste mejor a la pantalla
- Cómo recortar píxeles transparentes
- Reducción de la resolución a RGB565, sin pérdida de fidelidad
Según el cuadro delimitador resultante, el tamaño se calcula de la siguiente manera:
- Para imágenes y fuentes que usan RGBA8888: 4 x ancho x alto
- Para imágenes y fuentes que usan RGB565: 2 x ancho x alto
- Para imágenes y fuentes que usan la configuración de mapa de bits ALPHA_8: ancho x alto
Modo interactivo
Para calcular el uso de memoria en el modo interactivo, el sistema suma los siguientes valores:
- El tamaño sin procesar de las fuentes vectoriales
- El uso estimado de la fuente predeterminada del sistema
- Tamaño total de las imágenes y las fuentes de mapa de bits después de aplicar el recorte, el cambio de tamaño y el cambio de formato
Configuraciones
En el caso de las caras de reloj con configuraciones, el sistema intenta calcular el tamaño total de los recursos de la cara de reloj en diferentes configuraciones. Si la cantidad de combinaciones es muy grande, es posible que el sistema sobreestime la cantidad de recursos que se usan de forma simultánea.
Modo ambiente y capas
El sistema supone que el modo ambiente usa hasta tres capas de pantalla completa, dos de las cuales son estáticas. Las capas incluyen lo siguiente:
- Es el fondo de la cara del reloj. El sistema trata esto como una sola imagen, independientemente de cuántas imágenes comprenda el fondo.
- Partes móviles, como manecillas, pantallas digitales o elementos dinámicos
- Son los elementos restantes del archivo XML fuente.
Las fuentes de mapa de bits grandes suelen usar la mayor cantidad de memoria en el modo ambiente.
Métodos para reducir el uso de memoria
Usa las siguientes optimizaciones para reducir el uso de memoria.
Recorta y cambia el tamaño de las fuentes del mapa de bits
Recorta tus imágenes y objetos BitmapFont para que coincidan con el tamaño de visualización.
Wear OS dibuja las caras de reloj con todas las imágenes descomprimidas. Una imagen de pantalla completa que está mayormente en blanco es posible que consuma 3 KB en disco, pero 750 KB o más en una pantalla de 450 x 450 píxeles.
Usa alturas de fuente de mapa de bits coherentes
Cuando se usa una BitmapFont, asegúrate de que todas las imágenes de un carácter tengan la misma altura. Del mismo modo, asegúrate de que todas las imágenes de palabras tengan la misma altura.
Usa tamaños de fotogramas coherentes en las animaciones
En lugar de mover una imagen por la cara de reloj, actualiza los elementos de la imagen y mantén fija la posición del cuadro delimitador. Por ejemplo, para animar un círculo en la cara del reloj, cambia su color en lugar de hacerlo rodar.
Esta técnica reduce el tamaño del rectángulo delimitador calculado de la animación.
Anula el duplicado de imágenes
Para mostrar una imagen varias veces, incluye solo un recurso de imagen y haz referencia a él varias veces.
Muestra el progreso con objetos Arcs
Para simular una barra de progreso que finaliza después de 1 minuto o 1 hora, no uses 60 imágenes. Usa un objeto Arc con una expresión que controle su longitud, como se muestra aquí:
<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>
Si quieres mostrar una línea no continua, por ejemplo, para lograr un estilo de reloj digital retro, usa una propiedad de guión para un objeto Stroke o una máscara semitransparente que funcione como una superposición de imágenes.
Coloca las manecillas y las complicaciones del reloj al final del archivo fuente
Los nodos XML se dibujan en el orden que se indica en el XML de origen. Si colocas las manecillas y las complicaciones del reloj al final, permites que el sistema elimine una capa completa del cálculo de memoria del modo ambiente.
Cómo evaluar el uso de memoria de tu cara de reloj
Para medir el uso de memoria de tu cara de reloj, usa la herramienta de evaluación de espacio en memoria, disponible en el repositorio watchface de GitHub.