最佳化錶面的記憶體用量

為了盡可能延長 Wear OS 裝置的電池續航力,系統會執行以下作業: 計算記憶體用量根據 Wear OS 應用程式品質指南 規範,凡是使用錶面格式的錶面, 可供玩家使用的記憶體容量,視手錶目前的狀態而定:

  • 微光模式中,錶面無法使用超過 10 MB 的記憶體。
  • 在互動模式下,錶面無法使用超過 100 MB 的記憶體。
,瞭解如何調查及移除這項存取權。

系統會計算錶面的記憶體用量

如何計算錶面內圖片或點陣圖字型所佔用的大小 使用錶面格式時,系統會完成下列步驟:

  1. 解壓縮圖片或點陣圖字型。
  2. 檢查圖片或點陣圖字型,看看能否在其中一個字型上最佳化 方法如下:
    • 已調整大小,配合顯示大小。
    • 已裁剪圖片來移除完全透明的像素。
    • 向下取樣為 RGB565 (如果可在不使用的情況下完成) 但損失不至於擬真的

產生的定界框會根據產生的定界框,計算 或點陣圖字型 (以位元組為單位),如下所示:

  • 針對使用 RGBA8888 的圖片和字型: \( 4 \times width \times height \)
  • 針對使用 RGB565 的圖片和字型: \( 2 \times width \times height \)
  • 針對使用 ALPHA_8 點陣圖設定的圖片和字型: \( width \times height \)
,瞭解如何調查及移除這項存取權。

互動模式

計算互動模式的記憶體用量時,系統會計算 下列項目的總和:

  1. 任何向量字型未處理的大小。
  2. 系統預設字型的預估用量。
  3. 裁剪、調整大小、 或是重新格式化的內容

設定

針對包含設定的錶面,系統會嘗試計算 不同設定使用的資源總大小 有時候,當有非常大量的組合時 稍微高估了整個網路中同時使用多少資源 不同設定

微光模式和圖層

針對微光模式,系統會假設手錶轉譯時使用的是最高 三個全螢幕圖層,有兩個完全靜態的:

  1. 手錶元素下的所有內容。錶面的大部分「內文」為 合併到這個圖層中無論使用多少張圖片 繪製這個圖層而只會計為一個全螢幕圖片。
  2. 任何智慧手錶、數位螢幕或具備平台繫結的小工具 動態轉譯。
  3. 智慧手錶手部之後列出的所有元素,以及 來源 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 物件的 dash 屬性,或重疊的半透明遮罩圖片。

將手錶手和小工具放在來源檔案的結尾

XML 節點會按照在來源 XML 檔案中列出的順序繪製。變更者: 將手錶手和小工具放在檔案結尾,系統 讓微光模式的記憶體計算作業排除整個圖層。

評估錶面的記憶體用量

如要測量錶面的記憶體用量,請使用記憶體用量 GitHub 上的 watchface 存放區提供評估工具。

  • 注意:系統會在 JavaScript 關閉時顯示連結文字
  • Arc
  • Line
  • Rectangle