تحديد الأحداث المخصّصة (طرق العرض)

المفاهيم والتنفيذ في Jetpack Compose

لا تعرض عملية تتبُّع النظام سوى معلومات حول العمليات على مستوى النظام، لذا يصعب أحيانًا معرفة أيّ من طرق تطبيقك أو لعبتك يتم تنفيذه في وقت معيّن مقارنةً بأحداث النظام.

توفّر Jetpack واجهة برمجة تطبيقات لتتبُّع الأخطاء يمكنك استخدامها لتصنيف قسم معيّن من الرمز البرمجي. ويتم بعد ذلك تسجيل هذه المعلومات في عمليات التتبُّع التي يتم التقاطها على الجهاز. تسجّل مكتبة Macrobenchmark عمليات التتبُّع باستخدام نقاط التتبُّع المخصّصة تلقائيًا.

عند استخدام أداة سطر الأوامر systrace لتسجيل عمليات التتبُّع، يجب استخدام الخيار -a. بدون هذا الخيار، لن تظهر طرق تطبيقك في تقرير تتبُّع النظام.

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

ننصحك باستخدام دالة الإضافة في Kotlin، حتى في رمز Java، لأنّها توقف التتبُّع تلقائيًا عند اكتمال تعبير lambda. ويزيل ذلك خطر نسيان إيقاف التتبُّع.

يمكنك أيضًا استخدام واجهة برمجة تطبيقات NDK لأحداث التتبُّع المخصّصة. لمزيد من المعلومات عن استخدام واجهة برمجة التطبيقات هذه مع الرمز البرمجي الأصلي، اطّلِع على أحداث التتبُّع المخصّصة في الرمز البرمجي الأصلي.