O rastreamento do sistema mostra informações sobre processos apenas no nível do sistema. Por isso, às vezes é difícil saber quais métodos do app ou jogo estão sendo executados em relação aos eventos do sistema.
O Jetpack oferece uma API de rastreamento que pode ser usada para rotular uma seção de código. Essas informações são relatadas nos rastros capturados no dispositivo. A biblioteca Macrobenchmark captura rastros com pontos personalizados automaticamente.
Ao usar a ferramenta de linha de comando Systrace para capturar rastros, a opção -a
é
obrigatória. Sem ela, os métodos do app não aparecem em um relatório de
rastreamento do sistema.
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])
}
}
}
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return TraceKt.trace(
"MyAdapter.onCreateViewHolder",
() -> MyViewHolder.newInstance(parent)
);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
TraceKt.trace(
"MyAdapter.onBindViewHolder",
() -> {
TraceKt.trace(
"MyAdapter.queryDatabase",
() -> {
Item rowItem = queryDatabase(position);
dataset.add(rowItem);
}
);
}
);
}
}
Recomendamos o uso da função de extensão do Kotlin, mesmo em código Java, porque ela encerra automaticamente o rastreamento quando a lambda é concluída. Isso elimina o risco de esquecer de encerrar o rastreamento.
Também é possível usar uma API NDK para eventos de rastreamento personalizados. Para saber mais sobre como usar essa API no código nativo, consulte Eventos de rastreamento personalizado em código nativo.