Wear OS 會追蹤記憶體用量,藉此延長電池續航力。根據 Wear OS 應用程式品質指南,採用錶面格式的錶面有記憶體限制:
- 微光模式:記憶體用量上限為 10 MB。
- 互動模式:記憶體用量上限為 100 MB。
記憶體用量計算
如要使用錶面格式計算錶面中圖片或點陣圖字型的記憶體用量,系統會執行下列操作:
- 解壓縮圖片或字型。
- 確認是否適用下列最佳化措施:
- 調整大小,更貼合螢幕
- 裁剪透明像素
- 降採樣至 RGB565,不會損失保真度
系統會根據產生的邊界框,依下列方式計算大小:
- 使用 RGBA8888 的圖片和字型:4 x 寬度 x 高度
- 使用 RGB565 的圖片和字型:2 x 寬度 x 高度
- 使用 ALPHA_8 點陣圖設定的圖片和字型:寬度 x 高度
互動模式
如要計算互動模式的記憶體用量,系統會加總下列值:
- 任何向量字型的未處理大小
- 系統預設字型的預估使用量
- 裁剪、調整大小及重新格式化後,圖片和點陣圖字型的總大小
設定
如果是具有設定的錶面,系統會嘗試計算不同設定的錶面資源總大小。如果組合數量過多,系統可能會高估同時使用的資源數量。
微光模式和圖層
系統會假設微光模式最多使用三個全螢幕層,其中兩個是靜態層。這些圖層包括:
- 錶面背景。無論背景包含多少張圖片,系統都會將其視為一張圖片。
- 會移動的零件,例如指針、數位螢幕或動態元素。
- 來源 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="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>
如要顯示不連續的線條,例如想呈現復古的數位手錶樣式外觀,請使用 Stroke 物件的 dash 屬性,或重疊的半透明遮罩圖片。
將錶針和小工具放在來源檔案的結尾
系統會按照來源 XML 中列出的順序繪製 XML 節點。將錶針和複雜功能放在最後,系統就能從微光模式記憶體計算中排除整個圖層。
評估錶面的記憶體用量
如要評估錶面的記憶體用量,請使用 GitHub 上 watchface 存放區中的記憶體用量評估工具。