ジャンクのトラッキング

アプリをスムーズに動作させるには、60 fps(16 ms/フレーム)を目標とする必要があります。アプリが必要とするフレーム レンダリング時間を満たしていない場合、システムでフレームをスキップせざるを得なくなります。これは、アプリのスタッタリングとしてユーザーに認識されます。画面フレームが不足することで発生するこの不自然なインタラクションは、ジャンクと呼ばれます。このエクスペリエンスの詳細については、遅いレンダリングをご覧ください。

遅いフレーム、フリーズしたフレーム、ANR の関係

遅いフレーム、フリーズしたフレーム、ANR はすべて、アプリで発生する可能性のあるさまざまな形式のジャンクです。違いについては、以下の表をご覧ください。

遅いフレーム フリーズしたフレーム ANR
表示に要する時間 16 ミリ秒~700 ミリ秒 700 ミリ秒~5 秒 5 秒より大きい
ユーザーが知覚できる影響の範囲
  • RecyclerView のスクロールが突然動作する
  • 複雑なアニメーションが画面上で適切に動作しない
  • アプリケーションの起動時
  • 画面の遷移など、画面間の移動時
  • アクティビティがフォアグラウンドにある場合に、アプリが 5 秒以内に入力イベントまたは BroadcastReceiver(キーの押下や画面タッチイベントなど)に応答しなかった。
  • フォアグラウンドのアクティビティがない場合に、相応の時間が経過しても BroadcastReceiver の実行が終了しなかった。

遅いフレームとフリーズしたフレームの個別のトラッキング

アプリの起動時または別の画面への移行時には、最初のフレームの描画に 16 ミリ秒以上かかることが普通です。これは、アプリがビューを拡大し、画面をレイアウトして最初から描画する必要があるためです。

ジャンクの優先順位付けと解決のためのベスト プラクティス

アプリのジャンクを解決する場合は、次のベスト プラクティスを念頭に置いてください。

  • 最も簡単に再現できるジャンクのインスタンスを特定して解決します。
  • ANR を優先します。遅いフレームやフリーズしたフレームの場合、アプリが遅く動作しているように見えることがある一方で、ANR が発生するとアプリが停止します。
  • 遅いレンダリングを再現するのは難しいですが、700 ミリ秒のフリーズしたフレームを強制終了することから始めることができます。これは、アプリが起動する際や画面を変更するときによく発生します。