कस्टम इवेंट तय करना (व्यू)

कॉन्सेप्ट और Jetpack Compose को लागू करने का तरीका

सिस्टम ट्रेसिंग से, आपको सिर्फ़ सिस्टम लेवल पर प्रोसेस के बारे में जानकारी मिलती है. इसलिए, यह जानना मुश्किल हो जाता है कि सिस्टम इवेंट के मुकाबले, आपके ऐप्लिकेशन या गेम के कौनसे तरीके किसी खास समय पर काम कर रहे हैं.

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

हमारा सुझाव है कि Java कोड में भी Kotlin एक्सटेंशन फ़ंक्शन का इस्तेमाल करें. इसकी वजह यह है कि लैम्डा के पूरा होने पर, यह अपने-आप ट्रेस को खत्म कर देता है. इससे, ट्रेसिंग को खत्म करना भूल जाने का जोखिम खत्म हो जाता है.

कस्टम ट्रेस इवेंट के लिए, NDK एपीआई का भी इस्तेमाल किया जा सकता है. अपने नेटिव कोड के लिए इस एपीआई का इस्तेमाल करने के बारे में जानने के लिए, नेटिव कोड में कस्टम ट्रेस इवेंट देखें.