Wear OS отслеживает использование памяти, чтобы продлить время работы от батареи. Согласно рекомендациям по обеспечению качества приложений для Wear OS, циферблаты, созданные в формате Watch Face Format, имеют следующие ограничения по памяти:
- Фоновая подсветка: максимальный объем используемой памяти – 10 МБ.
- Интерактивный режим: максимальный объем используемой памяти – 100 МБ.
Расчет использования памяти
Чтобы вычислить использование памяти для изображения или битового шрифта на циферблате с помощью Watch Face Format, система выполняет следующие действия:
- Распакуйте изображение или шрифт.
- Проверьте, применимы ли следующие варианты оптимизации:
- Изменение размера для лучшего отображения на экране.
- Как обрезать прозрачные пиксели
- Понижение дискретизации до RGB565 без потери качества.
Размер вычисляется на основе полученной граничной рамки следующим образом:
- Для изображений и шрифтов, использующих RGBA8888: 4 x ширина x высота
- Для изображений и шрифтов, использующих RGB565: 2 x ширина x высота
- Для изображений и шрифтов, использующих конфигурацию растрового изображения ALPHA_8: ширина x высота.
Интерактивный режим
Чтобы рассчитать использование памяти в интерактивном режиме, система суммирует следующие значения:
- Необработанный размер любых векторных шрифтов.
- Расчетное использование системного шрифта по умолчанию
- Общий размер изображений и растровых шрифтов после кадрирования, изменения размера и переформатирования.
Конфигурации
Для циферблатов с конфигурациями система пытается рассчитать общий размер ресурсов циферблата для разных конфигураций. Если количество комбинаций очень велико, система может переоценить количество ресурсов, используемых одновременно.
Спящий режим и слои
Система предполагает, что в режиме ожидания используется до трех полноэкранных слоев, два из которых статичны. Слои включают:
- Фон циферблата. Система воспринимает это как одно изображение, независимо от того, сколько изображений входит в фон.
- Подвижные части, например руки, цифровые дисплеи или динамические элементы.
- Остальные элементы из исходного XML-файла.
В фоновом режиме больше всего памяти обычно занимают крупные шрифты с битовой картой.
Как уменьшить использование памяти
Чтобы уменьшить использование памяти, примените следующие оптимизации.
Как кадрировать и изменять размер растровых шрифтов
Обрежьте изображения и BitmapFont объекты, чтобы они соответствовали размеру экрана.
Wear OS отрисовывает циферблаты со всеми распакованными изображениями. Почти пустое полноэкранное изображение может занимать на диске 3 КБ, но на экране размером 450 x 450 пикселей – 750 КБ или больше.
Используйте одинаковую высоту растровых шрифтов
Если вы используете тип BitmapFont, убедитесь, что у всех изображений персонажа одинаковая высота. Также убедитесь, что у всех изображений для слов одинаковая высота.
Используйте в анимации кадры одинакового размера
Вместо того чтобы перемещать изображение по циферблату, обновите элементы изображения и сохраните положение ограничительной рамки. Например, чтобы анимировать круг на циферблате часов, измените его цвет, а не прокручивайте его.
Этот метод позволяет уменьшить размер расчетной граничной рамки анимации.
Как дедуплицировать изображения
Чтобы показать изображение несколько раз, добавьте только один ресурс изображения и укажите его несколько раз.
Как показывать прогресс с помощью дуг
Чтобы имитировать завершение выполнения задачи через минуту или час, не используйте 60 изображений. Используйте объект Arc с выражением, определяющим его длину, как показано ниже:
<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>
Чтобы отобразить прерывистую линию, например в стиле ретро-цифровых часов, используйте свойство dash для объекта Stroke или полупрозрачный оверлей маски изображения.
Размещайте стрелки часов и дополнения в конце исходного файла
Узлы XML рисуются в порядке, указанном в исходном XML-файле. Если разместить стрелки и дополнительные функции в конце, система сможет исключить целый слой из расчета памяти для режима Ambient.
Как оценить использование памяти циферблатом
Чтобы измерить использование памяти циферблатом, воспользуйтесь инструментом memory footprint evaluator, доступным в репозитории watchface на GitHub.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Arc
- Линия
- Прямоугольник