システム トレースでは、システムレベルでのみプロセスに関する情報が表示されるため、アプリまたはゲームのどのメソッドが、ある時点でシステム イベント対して実行されていたかを特定するのが困難な場合があります。
Jetpack には、コードの特定のセクションにラベルを付けるために使用できるトレース API が用意されています。この情報は、その後、デバイスでキャプチャされたトレースで報告されます。Macrobenchmark は、カスタム トレース ポイントを使用してトレースを自動的にキャプチャします。
systrace コマンドライン ツールを使用してトレースをキャプチャする場合は、-a
オプションが必要です。このオプションを使用しない場合、アプリのメソッドはシステム トレース レポートに表示されません。
Kotlin
class MyAdapter : RecyclerView.Adapter<MyViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { trace("MyAdapter.onCreateViewHolder") { MyViewHolder.newInstance(parent) } } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { trace("MyAdapter.onBindViewHolder") { trace("MyAdapter.queryDatabase") val rowItem = queryDatabase(position) dataset.add(rowItem) } holder.bind(dataset[position]) } } }
Java
Trace
クラスを使用します。
注: beginSection()
を複数回呼び出した後で endSection()
を呼び出すと、最後に呼び出された beginSection()
メソッドだけが終了します。そのため、下記のスニペットのようなネスト呼び出しの場合、各 beginSection()
呼び出しと各 endSection()
呼び出しが適切にマッチングしているか確認します。
また、あるスレッドで beginSection()
を呼び出して、別のスレッドから終了することはできません。1 つのスレッド内で両方のメソッドを呼び出す必要があります。
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Trace.beginSection("MyAdapter.onCreateViewHolder"); MyViewHolder myViewHolder; try { myViewHolder = MyViewHolder.newInstance(parent); } finally { // In try and catch statements, always call "endSection()" in a // "finally" block. That way, the method is invoked even when an // exception occurs. Trace.endSection(); } return myViewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Trace.beginSection("MyAdapter.onBindViewHolder"); try { try { Trace.beginSection("MyAdapter.queryDatabase"); RowItem rowItem = queryDatabase(position); dataset.add(rowItem); } finally { Trace.endSection(); } holder.bind(dataset.get(position)); } finally { Trace.endSection(); } } }
カスタム トレース イベント用の NDK API もあります。ネイティブ コードでこの API を使用する方法について詳しくは、ネイティブ コードのカスタム トレース イベントのドキュメントをご覧ください。
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- アプリのスタートアップ時間
- 遅いレンダリング