تعريف الأحداث المخصّصة

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

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

عند استخدام أداة سطر أوامر 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 لأحداث التتبع المخصصة. وللتعرّف على استخدام واجهة برمجة التطبيقات هذه للرمز الأصلي، يُرجى الاطّلاع على مقالة أحداث التتبُّع المخصّصة في الرموز البرمجية الأصلية.