Özel etkinlikleri (görüntülemeler) tanımlama

Kavramlar ve Jetpack Compose uygulaması

Sistem izleme, yalnızca sistem düzeyindeki işlemler hakkında bilgi gösterdiğinden, uygulamanızın veya oyununuzun hangi yöntemlerinin sistem etkinliklerine göre belirli bir zamanda yürütüldüğünü bilmek bazen zordur.

Jetpack, kodun belirli bir bölümünü etiketlemek için kullanabileceğiniz bir izleme API'si sağlar. Bu bilgiler daha sonra cihazda yakalanan izlerde raporlanır. Macrobenchmark izlemeleri özel izleme noktalarıyla otomatik olarak yakalar.

İzleri yakalamak için systrace komut satırı aracı kullanılı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ığı için Java kodunda bile Kotlin uzantı işlevini kullanmanızı öneririz. Bu sayede izlemeyi sonlandırmayı unutma riski ortadan kalkar.

Özel izleme etkinlikleri için NDK API'si de kullanabilirsiniz. Bu API'yi yerel kodunuz için kullanma hakkında bilgi edinmek için Yerel kodda özel izleme etkinlikleri başlıklı makaleyi inceleyin.