シェルの遷移を導入すると、システム内で実行しているアニメーションのメソッドが統合、体系化され、実行予定のアニメーションに関する一元化された情報を取得できます。
遷移トレースには、WindowManager(WM)シェル内で発生したすべての遷移に関するデータが含まれ、このトレースはシステムのサーバーとシェルの両方から取得されます。このトレースは Droidfood で恒久的に有効で、バグレポートに自動的に埋め込まれます。
トレース収集について詳しくは、シェルの遷移をご覧ください。
Winscope の遷移ビューアには、サーバーサイドとクライアントサイドの両方の情報を含む遷移トレースが表示されます。このビューアは、遷移に関する詳細情報を含むテーブルのログ表示(左側)と、遷移ごとの詳細ビュー(右側)で構成されています。
図 1. シェルの遷移のトレース分析。
表形式
表形式には次の項目が含まれます。
- ID: デバッグ用にのみ生成された遷移 ID。
- タイプ:
Transitions.java
で定義される遷移のタイプ。 - 送信時刻: 遷移がサーバーから処理されるシェルに送信された時点のタイムスタンプ。
- ディスパッチ時刻: 再生を開始するために遷移がハンドラにディスパッチされる時点のタイムスタンプ。
- 所要時間: 遷移の再生が開始されてから終了するまでの時間。
- ステータス: 遷移が次の場合:
- 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
: レイヤに適用される新しいフラッグの設定。