Menentukan peristiwa kustom

Pelacakan sistem hanya menunjukkan informasi tentang proses pada tingkat sistem. Jadi, terkadang sulit untuk mengetahui metode game atau aplikasi mana yang dijalankan pada waktu tertentu terkait dengan peristiwa sistem.

Jetpack menyediakan API perekaman aktivitas yang dapat Anda gunakan untuk memberi label pada bagian kode tertentu. Selanjutnya, informasi ini akan dilaporkan ke dalam rekaman aktivitas yang diambil di perangkat. Macrobenchmark akan mengambil rekaman aktivitas dengan titik rekaman aktivitas kustom secara otomatis.

Saat menggunakan alat command line systrace untuk mengambil rekaman aktivitas, opsi -a diperlukan. Tanpa opsi ini, metode aplikasi Anda tidak akan muncul dalam laporan pelacakan sistem.

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);
                    }
                );
            }
        );
    }
}

Sebaiknya gunakan fungsi ekstensi Kotlin, bahkan di dalam kode Java, karena fungsi tersebut secara otomatis mengakhiri rekaman aktivitas saat lambda selesai. Tindakan ini dapat menghilangkan risiko lupa untuk mengakhiri perekaman aktivitas.

Anda juga dapat menggunakan NDK API untuk peristiwa rekaman aktivitas kustom. Untuk mempelajari cara menggunakan API ini di kode native, lihat Peristiwa rekaman aktivitas kustom dalam kode native.