Definisci eventi personalizzati

Il tracciamento del sistema mostra informazioni sui processi solo a livello di sistema, pertanto a volte è difficile sapere quali metodi dell'app o del gioco vengono eseguiti in un determinato momento in relazione agli eventi di sistema.

Jetpack fornisce un'API di tracciamento che puoi utilizzare per etichettare una determinata sezione di codice. Queste informazioni vengono quindi riportate nelle tracce acquisite sul dispositivo. Macrobenchmark acquisisce automaticamente tracce con punti di traccia personalizzati.

Quando utilizzi lo strumento a riga di comando systrace per acquisire le tracce, è richiesta l'opzione -a. Senza questa opzione, i metodi dell'app non vengono visualizzati in un report sulle tracce 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);
                    }
                );
            }
        );
    }
}

Ti consigliamo di utilizzare la funzione dell'estensione Kotlin, anche nel codice Java, poiché termina automaticamente la traccia al completamento della funzione lambda. In questo modo si elimina il rischio di dimenticare di terminare il tracciamento.

Puoi anche utilizzare un'API NDK per eventi di traccia personalizzati. Per scoprire di più sull'utilizzo di questa API per il codice nativo, consulta Eventi di traccia personalizzati nel codice nativo.