シェルの遷移

シェル遷移の導入により、システム内でアニメーションを実行する方法が統合され、コード化されました。これにより、実行予定のアニメーションに関する一元化された情報を取得できるようになりました。

遷移トレースには、システム サーバー側とシェル側の両方から発生する、WindowManager(WM)シェル内で発生するすべての遷移に関するデータが含まれます。このトレースは Droidfood で常に有効になっており、バグレポートに自動的に埋め込まれます。

トレース収集の詳細については、シェルの遷移をご覧ください。

Winscope の遷移ビューアには、サーバーサイドとクライアントサイドの両方の情報を含む遷移トレースの情報が表示されます。ビューアは、左側に遷移に関する概要情報、右側に各遷移の詳細ビューを含むテーブルログビューで構成されています。

シェルの遷移トレース分析

図 1. シェルの遷移トレースの分析。

表形式

表形式には次のものが含まれます。

  • Id: デバッグ専用に生成される遷移 ID。
  • Type: Transitions.java で定義されている遷移タイプ
  • 送信時間: 移行がサーバーからシェルに送信されて処理されたタイムスタンプ。
  • Dispatch Time: 再生を開始するために遷移がハンドラにディスパッチされたときのタイムスタンプ。
  • 時間: 再生開始から終了までの遷移にかかった時間。
  • ステータス: 移行が次のいずれかの場合:
    • 再生済み: 再生済み。
    • ABORTED: 再生前に中止されました。遷移は、シェル側または WM 側から中止できます。
    • MERGED: 遷移ハンドラによって、すでに再生中の他の遷移と統合されます(ハンドラが処理方法を決定します)。

詳細表示

表形式の詳細に加えて、[選択した遷移] セクションの詳細な遷移ビューには、次の情報が表示されます。

  • handler: このアニメーションを処理した遷移ハンドラ。
  • createTimeNs: WM サーバー側で作成された遷移のタイムスタンプ。
  • finishTimeNs: シェル側で遷移の実行が完了したことが WM サーバー側に通知されたときのタイムスタンプ。
  • endTransactionId: この遷移に含まれる最後の SurfaceFlinger トランザクション。
  • startTransactionId: この遷移に含まれる最初の SurfaceFlinger トランザクション。
  • targets: 移行参加者のリスト。
  • type: Transitions.java で定義されている遷移タイプ。

目標

ターゲットは、遷移に関連する要素(通常はアクティビティまたはタスク)です。ターゲットごとに、以下が記録されます。

  • layerId: アニメーション化されているレイヤ(SurfaceFlinger 階層から)。
  • mode: このレイヤで実行されるアニメーションのタイプ。
  • windowId: アニメーション化されているウィンドウ(WindowManager 階層から)。
  • flags: レイヤに適用される新しいフラグのセット。