對動畫卡頓進行偵錯

應用程式開發人員面臨的一大問題,就是確保動畫流暢、無故障和無資源浪費。當系統也會執行耗用大量資源的背景工作時,這就特別難以偵錯。要判斷某些卡頓是由您的應用程式還是系統造成,目前沒有任何簡單的方法。不過,您也可以使用分析器工具找出不良行為的可能來源。

在 ChromeOS 上轉譯

經過微調的應用程式 (例如遊戲) 通常會使用雙緩衝功能,盡可能降低使用者回應時間。不過,仍有許多因素可能會降低效能。舉例來說,如果轉譯影格時間過長,轉譯後的結果就無法進行下一個緩衝區替換,因此先前的影格會重複。

之後,轉譯器就無法開始轉譯下一個影格,因而造成其他問題。Android 行動開發人員熟悉這種情境,因此應用程式在 ChromeOS 上執行時,使用情境會更複雜。

在電腦上執行的應用程式不會直接算繪至螢幕的顯示框。而是將其資料算繪為紋理。通常有多個應用程式,每個應用程式都會將圖形算繪為紋理。系統會使用合成器在螢幕上建構檢視畫面,將所有紋理合併為單一桌面映像檔。

合成器在背景中公開運作。但是,它導入了單一影格時間延遲,以充分利用 GPU 管道。在理想情況下,這並非必要,但可以流暢地系統效能波動,並協助您平衡非對稱的負載。

作業系統運作非常困難時,GPU 可能會遭到擠壓。影格轉譯到螢幕顯示的時間可能會有延遲。視硬體而定,系統可能會使用四項緩衝處理來彌補不足之處。即使緩衝時間較為深度,繪圖管線仍會出現異常。

ARC 圖形追蹤器

ChromeOS 提供一項剖析工具,可顯示緩衝區在這個系統的對齊方式、記憶體替換時間、CPU/GPU 的忙碌程度,以及應用程式在特定時間執行的動作,如下圖所示:

設定分析器

如要使用分析器,必須執行 M75 以上版本。為獲得最佳效果,請使用 Intel 裝置。

使用分析器前,請先為應用程式加上追蹤記錄。在程式碼中將 Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); 新增至要加入追蹤記錄的位置。請使用開頭為 customTrace 前置字串的 Event。追蹤記錄訊息中不會顯示前置字串。

如要設定分析器,請按照下列步驟操作:

  1. 開啟開發人員模式。
  2. 開啟 Chrome 設定並啟用 ARC 圖形緩衝區視覺化工具
  3. 前往 chrome://arc-graphics-tracing

執行分析器

  1. 選取「卡頓上的停靠站」
  2. 執行 Android 應用程式。
  3. 在 Android 應用程式啟用且聚焦於焦點後,按下 Control + Shift + G 鍵。

發生資源浪費時,系統會彈出瀏覽器視窗。使用 W 鍵和 S 鍵可縮放及縮小時間軸。