Define eventos personalizados

El registro del sistema muestra información sobre los procesos solamente a nivel del sistema; por lo tanto, algunas veces resulta difícil saber cuáles de los métodos de tu app o juego estaban en ejecución en un momento determinado respecto de los eventos del sistema.

Jetpack proporciona una API de registro que puedes usar para etiquetar una sección de código específica. Luego, esa información aparece en los registros capturados en el dispositivo. Las macrocomparativas capturan registros con puntos personalizados automáticamente.

Cuando se usa la herramienta de línea de comandos systrace para capturar registros, se requiere la opción -a. Sin esta opción, los métodos de la app no aparecerán en el informe de registro del sistema.

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

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 usar la función de extensión de Kotlin, incluso en código Java, ya que finaliza el registro automáticamente cuando se completa la expresión lambda. Esto evita el riesgo de olvidarse de finalizar el registro.

También puedes usar una API de NDK para los eventos de registro personalizados. Si quieres obtener información para usar esta API en tu código nativo, consulta Eventos de seguimiento personalizados en código nativo.