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

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

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 API का इस्तेमाल भी किया जा सकता है. इसका इस्तेमाल करने के बारे में जानने के लिए आपके नेटिव कोड के लिए एपीआई, नेटिव में कस्टम ट्रेस इवेंट देखें कोड.