为了尽可能延长 Wear OS 设备的电池续航时间,系统 执行内存用量计算。作为 Wear OS 应用质量评估的一部分 指南中所述,使用表盘格式的表盘在 它们可以使用的内存量,具体取决于手表的当前状态:
- 在氛围模式下,表盘占用的内存不得超过 10 MB。
- 在互动模式下,表盘占用的内存不得超过 100 MB。
系统计算表盘的内存用量
为了计算某个图片或位图字体在 使用表盘格式,则系统会完成以下步骤:
- 解压缩图片或位图字体。
- 检查图片或位图字体,看看能否使用下列其中一种工具进行优化
方法:
<ph type="x-smartling-placeholder">
- </ph>
- 已调整大小以更好地匹配显示屏尺寸。
- 已剪裁以移除完全透明的像素。
- 下采样为 RGB565(如果无需 保真度损失。
根据生成的边界框,系统计算图片的大小 或位图字体(以字节为单位),例如:
- 对于使用 RGBA8888 的图片和字体: \( 4 \times width \times height \)
- 对于使用 RGB565 的图片和字体: \( 2 \times width \times height \)
- 对于使用 ALPHA_8 位图配置的图片和字体: \( width \times height \)
互动模式
在计算交互模式的内存使用量时,系统会计算 以下各项的总和:
- 任何矢量字体的未处理大小。
- 系统默认字体的估算使用情况。
- 对图像和位图字体执行任何剪裁、大小调整 或重新设置格式
配置
对于包含配置的表盘,系统会尝试计算 不同配置中使用的资源的总大小。 有时,当存在大量的组合时,系统会 这个数字略高于 不同的配置
氛围模式和图层
对于微光模式,系统假定手表渲染使用最多 三个全屏层,其中两个是完全静态的:
- 手表元素下的所有元素。表盘“正文”的大部分为 合成到该层中。将多少图片用于 绘制该层;系统就会将其计为一张全屏图片。
- 任何手表指针、数字显示屏或带有平台绑定的复杂功能 动态呈现的图片
- 所有列在手表指针和复杂功能的 源 XML 文件。
通常情况下,微光模式下的内存用量大多来自位图字体,尤其是 大型语言模型
减少内存用量的方法
通过采纳这部分的建议,您更有可能创建 表盘,其内存消耗在这些限制范围内。
剪裁位图字体以及调整其大小
剪裁图片和 BitmapFont
对象,并根据其显示大小来调整其大小。
当 Wear OS 绘制表盘时,系统会解压缩所有图片。一幅大部分是空白的全屏图片在磁盘上可能会占用 3 KB 的内存,但如果它显示在 450 x 450 像素的屏幕上,系统会解压缩该图片,从而将该图片在内存中的大小增至 750 KB 或更大。
使用一致的位图字体高度
使用 BitmapFont
时,同一个字符的所有图片都应具有相同的高度。同理,包含字词的所有图片也应具有相同的高度。
在动画中使用一致的帧大小
请不要在表盘上移动图片,而是更新 并保持其边界框相对于表盘的同一位置。 例如,如果您想在表盘上为圆形添加动画效果,可以考虑 更改圆圈的颜色,而不是在手表内滚动圆圈 。
此技术可减小系统计算的边界框的大小 动画效果
删除重复的图片
如果您的表盘显示了同一张图片的多个副本,请仅包含一个副本 然后在资源目录中复制该图片的副本 次。
使用弧形显示进度
如需模拟在 1 分钟后或 1 小时后完成的进度条,请勿使用 60 张单独的图片,而是要改为创建一个 Arc
对象,让其中包含一个可控制其长度的表达式,如以下代码段所示:
<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>
如需显示不连续的线条(例如为了实现复古的数字手表样式),请为 Stroke
对象使用短划线属性或半透明蒙版图像叠加层。
将手表指针和复杂功能放在源文件的末尾
XML 节点会按照它们在源 XML 文件中的列出顺序绘制。修改者 将手表指针和复杂功能放在文件末尾, 从微光模式内存计算中排除整个层。
评估表盘的内存用量
如需测量表盘的内存用量,请使用内存占用量
评估器工具,可在 GitHub 上的 watchface
代码库中获取。