কাস্টম ঘটনা সংজ্ঞায়িত করুন

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

জেটপ্যাক একটি ট্রেসিং API প্রদান করে যা আপনি কোডের একটি নির্দিষ্ট বিভাগ লেবেল করতে ব্যবহার করতে পারেন। এই তথ্য তারপর ডিভাইসে ক্যাপচার ট্রেস রিপোর্ট করা হয়. ম্যাক্রোবেঞ্চমার্ক স্বয়ংক্রিয়ভাবে কাস্টম ট্রেস পয়েন্ট সহ ট্রেস ক্যাপচার করে।

ট্রেস ক্যাপচার করতে systrace কমান্ড লাইন টুল ব্যবহার করার সময়, -a বিকল্পটি প্রয়োজন। এই বিকল্পটি ছাড়া, আপনার অ্যাপের পদ্ধতিগুলি একটি সিস্টেম ট্রেস রিপোর্টে উপস্থিত হয় না৷

কোটলিন

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

আমরা কোটলিন এক্সটেনশন ফাংশন ব্যবহার করার পরামর্শ দিই, এমনকি জাভা কোডেও, কারণ ল্যাম্বডা সম্পূর্ণ হলে এটি স্বয়ংক্রিয়ভাবে ট্রেস শেষ করে। এটি ট্রেসিং শেষ করতে ভুলে যাওয়ার ঝুঁকি সরিয়ে দেয়।

আপনি কাস্টম ট্রেস ইভেন্টের জন্য একটি NDK API ব্যবহার করতে পারেন। আপনার নেটিভ কোডের জন্য এই API ব্যবহার সম্পর্কে জানতে, নেটিভ কোডে কাস্টম ট্রেস ইভেন্ট দেখুন।

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}