Definisci eventi personalizzati (visualizzazioni)

Concetti e implementazione di Jetpack Compose

Il tracciamento del sistema mostra informazioni sui processi solo a livello di sistema, quindi a volte è difficile sapere quali metodi della tua app o del tuo gioco vengono eseguiti in un determinato momento rispetto agli eventi di sistema.

Jetpack fornisce un'API di tracciamento che puoi utilizzare per etichettare una sezione specifica del codice. Queste informazioni vengono poi riportate nei tracciamenti acquisiti sul dispositivo. Macrobenchmark acquisisce automaticamente i tracciamenti con punti di tracciamento personalizzati.

Quando utilizzi lo strumento a riga di comando systrace per acquisire i tracciamenti, è necessaria l'opzione -a. Senza questa opzione, i metodi della tua app non vengono visualizzati in un report di tracciamento 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 di estensione Kotlin, anche nel codice Java, perché termina automaticamente il tracciamento al completamento della lambda. In questo modo non rischi di dimenticare di terminare il tracciamento.

Puoi anche utilizzare un'API NDK per gli eventi di tracciamento personalizzati. Per scoprire come utilizzare questa API per il codice nativo, consulta Eventi di tracciamento personalizzati nel codice nativo code.