تعریف رویدادهای سفارشی (نماها)

مفاهیم و پیاده‌سازی Jetpack Compose

ردیابی سیستم اطلاعات مربوط به فرایندها را فقط در سطح سیستم به شما نشان می‌دهد، بنابراین گاهی‌اوقات دشوار است که بدانید کدام‌یک از روش‌های برنامه یا بازی شما در زمان مشخصی نسبت‌به رویدادهای سیستم درحال اجرا است.

‫Jetpack یک میانای برنامه‌سازی کاربردی ردیابی ارائه می‌دهد که می‌توانید از آن برای برچسب‌گذاری بخش خاصی از کد استفاده کنید. سپس این اطلاعات در ردیابی‌های ضبط‌شده در دستگاه گزارش می‌شود. Macrobenchmark ردگیری‌ها را با نقاط ردگیری سفارشی به‌طور خودکار ضبط می‌کند.

هنگام استفاده از ابزار خط فرمان systrace برای ضبط ردگیری‌ها، گزینه -a الزامی است. بدون این گزینه، روش‌های برنامه‌تان در گزارش ردیابی سیستم نشان داده نمی‌شود.

کاتلین

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

جاوا

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

توصیه می‌کنیم از تابع افزونه Kotlin استفاده کنید، حتی در کد Java، زیرا وقتی لامبدا تکمیل می‌شود، ردیابی را به‌طور خودکار پایان می‌دهد. این کار خطر فراموش کردن پایان دادن به ردیابی را ازبین می‌برد.

همچنین می‌توانید از NDK API برای رویدادهای ردیابی سفارشی استفاده کنید. برای آشنایی با نحوه استفاده از این میانای برنامه‌سازی کاربردی برای کد بومی‌تان، به رویدادهای ردیابی سفارشی در کد بومی مراجعه کنید.