Özel etkinlikleri tanımlama

Sistem izleme, işlemler hakkında yalnızca sistem düzeyindeki bilgileri gösterir. Bu nedenle, uygulama veya oyununuzdaki yöntemlerin belirli bir zamanda, sistem olaylarına göre hangi yöntemin yürütüldüğünü bilmek zor olur.

Jetpack, kodun belirli bir bölümünü etiketlemek için kullanabileceğiniz bir izleme API'si sunar. Bu bilgiler daha sonra cihazda yakalanan izlerde raporlanır. Makrobenchmark, özel iz noktaları bulunan izleri otomatik olarak yakalar.

İzleri yakalamak için systrace komut satırı aracını kullanırken -a seçeneği gereklidir. Bu seçenek olmadan, uygulamanızın yöntemleri sistem izleme raporunda görünmez.

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

Lambda tamamlandığında izlemeyi otomatik olarak sonlandırdığından, Java kodunda bile Kotlin uzantı işlevini kullanmanızı öneririz. Bu, izlemeyi sonlandırma riskini ortadan kaldırır.

Özel izleme etkinlikleri için NDK API de kullanabilirsiniz. Yerel kodunuz için bu API'yi kullanma hakkında bilgi edinmek istiyorsanız Yerel kodda özel izleme etkinlikleri bölümüne bakın.