殼轉換

導入殼層轉場效果後,系統會整合並編碼執行動畫的方法,以便擷取預定執行動畫的集中式資訊。

轉換追蹤記錄包含 WindowManager (WM) Shell 中每次轉換的資料,包括系統伺服器和 Shell 的資料。Droidfood 會永久啟用這項追蹤功能,並自動將追蹤記錄嵌入錯誤報告。

如要進一步瞭解追蹤記錄收集作業,請參閱「殼層轉移」。

如果轉換追蹤記錄同時包含伺服器端和用戶端資訊,Winscope 的「Transitions」檢視器就會顯示這項資訊。檢視器左側會顯示表格記錄檢視畫面,其中包含高階轉換資訊,右側則會顯示每項轉換的詳細檢視畫面:

殼層轉移追蹤分析

圖 1. 殼層轉移追蹤分析。

表格檢視

表格檢視包含:

  • ID:僅供偵錯的轉移 ID。
  • 類型:轉場效果類型,如 Transitions.java 中所定義。
  • 傳送時間:伺服器將轉場效果傳送至殼層以供處理時的時間戳記。
  • Dispatch Time:轉換作業分派至處理常式以開始播放的時間戳記。
  • 時間:從開始播放到完成轉場效果所花費的時間。
  • 狀態:如果轉移作業是:
    • 已玩過:已玩過。
    • ABORTED:在播放前中止。您可以從 Shell 或 WM 端中止轉場效果。
    • 已合併:由轉場效果處理常式合併至其他已播放的轉場效果 (處理常式會決定如何處理)。

詳細檢視

除了表格檢視畫面中的詳細資料,「SELECTED TRANSITION」(選取的轉場效果) 部分中的詳細轉場效果檢視畫面還包含:

  • handler:處理這項動畫的轉場處理常式。
  • createTimeNs:在 WM 伺服器端建立轉移作業的時間戳記。
  • finishTimeNs:WM 伺服器端收到通知,得知轉移作業已在殼層端完成時的時間戳記。
  • endTransactionId:此轉場效果中包含的最終 SurfaceFlinger 交易。
  • startTransactionId:此轉場效果中包含的初始 SurfaceFlinger 交易。
  • targets:遷移作業參與者清單。
  • type:轉場效果類型,如 Transitions.java 中所定義。

目標

目標是轉換所涉及的元素,通常是活動或工作。系統會記錄每個目標的下列資訊:

  • layerId:正在製作動畫的圖層 (來自 SurfaceFlinger 階層)。
  • mode:在這個圖層上執行的動畫類型。
  • windowId:正在進行動畫的視窗 (來自 WindowManager 階層)。
  • flags:要套用至圖層的新一組旗標。