シェルの遷移

シェルの遷移を導入すると、システム内で実行しているアニメーションのメソッドが統合、体系化され、実行予定のアニメーションに関する一元化された情報を取得できます。

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

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

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

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

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

テーブルビュー

テーブルビューには次の項目が含まれます。

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

詳細ビュー

テーブルビューの情報に加えて、[SELECTED TRANSITION] セクションの詳細な遷移ビューには以下の情報が含まれます。

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

ターゲット

ターゲットとは、遷移に関与する要素(通常はアクティビティまたはタスク)です。記録される各ターゲットは次のとおりです。

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