কাস্টম ইভেন্ট (ভিউ) নির্দিষ্ট করুন

ধারণা ও Jetpack Compose-এর প্রয়োগ

সিস্টেম ট্রেসিং আপনাকে শুধুমাত্র সিস্টেম লেভেলে প্রসেস সম্পর্কে তথ্য দেখায়, তাই সিস্টেম ইভেন্টের সাপেক্ষে নির্দিষ্ট সময়ে আপনার অ্যাপ বা গেমের কোন পদ্ধতি এক্সিকিউট হচ্ছে তা জানা কখনও কখনও কঠিন হয়।

Jetpack একটি ট্রেসিং API প্রদান করে যা আপনি কোডের একটি নির্দিষ্ট বিভাগ লেবেল করতে ব্যবহার করতে পারেন। এই তথ্য ডিভাইসে ক্যাপচার করা ট্রেসে রিপোর্ট করা হয়। 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])
        }
    }
}

জাভা

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 ব্যবহার করতে পারবেন। আপনার নেটিভ কোডের জন্য এই API ব্যবহার করার ব্যাপারে জানতে, নেটিভ কোডে কাস্টম ট্রেস ইভেন্ট দেখুন।