殼轉換

引入殼層轉場後,系統內執行動畫的方法就會整合並編碼,讓您能夠擷取有關要執行的動畫的集中資訊。

轉場追蹤記錄包含 WindowManager (WM) 殼層中發生的每個轉場資料,這些資料來自系統伺服器和殼層。這項追蹤記錄會在 Droidfood 中永久啟用,並自動嵌入錯誤報告中。

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

Winscope 的轉場檢視器會針對包含伺服器端和用戶端資訊的轉場追蹤記錄顯示這項資訊。檢視器包含表格記錄檢視畫面,左側顯示轉場效果的概略資訊,右側則顯示各轉場效果的詳細資訊:

殼層轉換追蹤分析

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

表格檢視

表格檢視包含:

  • ID:轉換 ID,僅供偵錯使用。
  • Type:轉換類型,如 Transitions.java 所定義
  • 傳送時間:從伺服器傳送至殼層以便處理的轉換作業時間戳記。
  • 調度時間:轉場效果調度至處理常式以開始播放的時間戳記。
  • 時間長度:從開始播放到結束,轉場所需的時間。
  • 狀態:如果轉換為:
    • PLAYED::已播放。
    • ABORTED:在播放前中止。轉換作業可從殼層或 WM 端中中止。
    • MERGED:由轉場處理常式合併至其他已播放的轉場 (處理常式會決定如何處理此轉場)。

詳細檢視

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

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

目標

目標是指轉換中涉及的元素 (通常是活動或工作)。針對每個目標,我們會記錄下列資訊:

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