বেসলাইন প্রোফাইল তৈরি করুন

Jetpack Macrobenchmark লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। আমরা আপনাকে com.android.tools.build:gradle:8.0.0 বা উচ্চতর ব্যবহার করার পরামর্শ দিচ্ছি, যা বেসলাইন প্রোফাইল ব্যবহার করার সময় বিল্ড উন্নতির সাথে আসে।

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার জন্য এই সাধারণ পদক্ষেপগুলি হল:

  1. বেসলাইন প্রোফাইল মডিউল সেট আপ করুন।
  2. বেসলাইন প্রোফাইল তৈরি করতে সহায়তা করে JUnit পরীক্ষাটি সংজ্ঞায়িত করুন।
  3. আপনি অপ্টিমাইজ করতে চান এমন ক্রিটিক্যাল ইউজার জার্নি (CUJs) যোগ করুন।
  4. বেসলাইন প্রোফাইল তৈরি করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করার পরে, গতির উন্নতি পরিমাপ করতে একটি শারীরিক ডিভাইস ব্যবহার করে বেঞ্চমার্ক করুন।

AGP 8.2 বা উচ্চতর দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সবচেয়ে সহজ উপায় হল বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করা, যা Android Studio Iguana এবং Android Gradle Plugin (AGP) 8.2 থেকে পাওয়া যায়।

অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট বেসলাইন প্রোফাইল তৈরি এবং বেঞ্চমার্ক করতে একটি নতুন মডিউল তৈরিকে স্বয়ংক্রিয় করে। টেমপ্লেটটি চালানোর ফলে বেশিরভাগ সাধারণ বিল্ড কনফিগারেশন, বেসলাইন প্রোফাইল জেনারেশন এবং যাচাইকরণ কোড তৈরি হয়। টেমপ্লেটটি তৈরি করতে কোড তৈরি করে এবং অ্যাপ স্টার্টআপ পরিমাপের জন্য বেসলাইন প্রোফাইল বেঞ্চমার্ক করে।

বেসলাইন প্রোফাইল মডিউল সেট আপ করুন

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট চালানোর জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন
  2. টেমপ্লেট প্যানেলে বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেট নির্বাচন করুন এবং এটি কনফিগার করুন:
    চিত্র 1. বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট।

    টেমপ্লেটের ক্ষেত্রগুলি নিম্নরূপ:

    • লক্ষ্য অ্যাপ্লিকেশন : বেসলাইন প্রোফাইল কোন অ্যাপের জন্য তৈরি করা হয়েছে তা নির্ধারণ করে। যখন আপনার প্রোজেক্টে শুধুমাত্র একটি অ্যাপ মডিউল থাকে, তখন এই তালিকায় শুধুমাত্র একটি আইটেম থাকে।
    • মডিউল নাম : বেসলাইন প্রোফাইল মডিউল তৈরির জন্য আপনি যে নামটি চান।
    • প্যাকেজের নাম : বেসলাইন প্রোফাইল মডিউলের জন্য আপনি যে প্যাকেজ নামটি চান।
    • ভাষা : আপনি জেনারেট করা কোডটি কোটলিন বা জাভা হতে চান কিনা।
    • কনফিগারেশন ভাষা তৈরি করুন : আপনি আপনার বিল্ড কনফিগারেশন স্ক্রিপ্টগুলির জন্য কোটলিন স্ক্রিপ্ট (কেটিএস) বা গ্রোভি ব্যবহার করতে চান কিনা।
    • Gradle-পরিচালিত ডিভাইস ব্যবহার করুন : আপনি আপনার অ্যাপ পরীক্ষা করতে Gradle-পরিচালিত ডিভাইস ব্যবহার করছেন কিনা।
  3. Finish-এ ক্লিক করুন এবং নতুন মডিউল তৈরি করা হয়েছে। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করেন, তাহলে আপনাকে সোর্স কন্ট্রোলে নতুন তৈরি মডিউল ফাইল যোগ করার জন্য বলা হতে পারে।

বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন

নতুন তৈরি মডিউলটিতে বেসলাইন প্রোফাইল তৈরি এবং বেঞ্চমার্ক উভয় পরীক্ষা রয়েছে এবং শুধুমাত্র প্রাথমিক অ্যাপ স্টার্টআপ পরীক্ষা করা হয়েছে। আমরা সুপারিশ করি যে আপনি CUJ এবং উন্নত স্টার্টআপ ওয়ার্কফ্লোগুলিকে অন্তর্ভুক্ত করার জন্য এগুলিকে বৃদ্ধি করুন৷ নিশ্চিত করুন যে অ্যাপ স্টার্টআপ সম্পর্কিত যেকোন পরীক্ষা একটি rule ব্লকে includeInStartupProfile true সেট করা আছে; বিপরীতভাবে, সর্বোত্তম কর্মক্ষমতার জন্য নিশ্চিত করুন যে অ্যাপ স্টার্টআপের সাথে সম্পর্কিত নয় এমন কোনো পরীক্ষা স্টার্টআপ প্রোফাইলে অন্তর্ভুক্ত করা হয়নি। অ্যাপ স্টার্টআপ অপ্টিমাইজেশানগুলি একটি স্টার্টআপ প্রোফাইল নামে একটি বেসলাইন প্রোফাইলের একটি বিশেষ অংশকে সংজ্ঞায়িত করতে ব্যবহৃত হয়।

এটি রক্ষণাবেক্ষণে সহায়তা করে যদি আপনি এই CUJগুলিকে তৈরি করা বেসলাইন প্রোফাইল এবং বেঞ্চমার্ক কোডের বাইরে বিমূর্ত করেন যাতে সেগুলি উভয়ের জন্য ব্যবহার করা যেতে পারে। এর মানে হল যে আপনার CUJ-তে পরিবর্তনগুলি ধারাবাহিকভাবে ব্যবহার করা হয়।

বেসলাইন প্রোফাইল তৈরি এবং ইনস্টল করুন

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট বেসলাইন প্রোফাইল তৈরি করতে একটি নতুন রান কনফিগারেশন যোগ করে। আপনি যদি পণ্যের স্বাদ ব্যবহার করেন, তবে Android স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে যাতে আপনি প্রতিটি স্বাদের জন্য পৃথক বেসলাইন প্রোফাইল তৈরি করতে পারেন।

বেসলাইন প্রোফাইল রান কনফিগারেশন তৈরি করুন।
চিত্র 2. এই কনফিগারেশনটি চালানোর ফলে বেসলাইন প্রোফাইল তৈরি হয়।

যখন জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশন সম্পূর্ণ হয়, তখন এটি তৈরি করা বেসলাইন প্রোফাইলটিকে src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে যেটি প্রোফাইল করা হচ্ছে। বৈকল্পিক বিকল্পগুলি হয় রিলিজ বিল্ড টাইপ বা রিলিজ বিল্ড টাইপ জড়িত একটি বিল্ড বৈকল্পিক।

তৈরি করা বেসলাইন প্রোফাইলটি মূলত build/outputs তৈরি করা হয়। সম্পূর্ণ পথটি প্রোফাইল করা অ্যাপের রূপ বা স্বাদ দ্বারা নির্দেশিত হয় এবং আপনি প্রোফাইলিংয়ের জন্য গ্র্যাডল-পরিচালিত ডিভাইস বা সংযুক্ত ডিভাইস ব্যবহার করেন কিনা। আপনি যদি কোড দ্বারা ব্যবহৃত নামগুলি ব্যবহার করেন এবং টেমপ্লেট দ্বারা তৈরি কনফিগারেশনগুলি তৈরি করেন, তাহলে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt এ তৈরি করা হয়। আপনি সম্ভবত উত্পন্ন বেসলাইন প্রোফাইলের এই সংস্করণের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না যদি না আপনি ম্যানুয়ালি লক্ষ্য মডিউলগুলিতে এটি অনুলিপি করছেন (প্রস্তাবিত নয়)।

AGP 8.1 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আপনি যদি বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করতে সক্ষম না হন তবে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে Android Studio Giraffe এবং AGP 8.1 দিয়ে শুরু করে এই টুলগুলি ব্যবহার করার পরামর্শ দিই।

এখানে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার পদক্ষেপগুলি রয়েছে:

  1. আপনার গ্রেডল প্রকল্পে একটি ম্যাক্রোবেঞ্চমার্ক মডিউল সেট আপ করুন
  2. BaselineProfileGenerator নামে একটি নতুন ক্লাস সংজ্ঞায়িত করুন:
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collect(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }
    

    জেনারেটরে অ্যাপ স্টার্টআপের বাইরে আপনার অ্যাপের সাথে ইন্টারঅ্যাকশন থাকতে পারে। এটি আপনাকে আপনার অ্যাপের রানটাইম পারফরম্যান্সকে অপ্টিমাইজ করতে দেয়, যেমন স্ক্রলিং তালিকা, অ্যানিমেশন চালানো এবং একটি Activity মধ্যে নেভিগেট করা। পরীক্ষার অন্যান্য উদাহরণ দেখুন যা @BaselineProfileRule ব্যবহার করে সমালোচনামূলক ব্যবহারকারীর যাত্রা উন্নত করতে।

  3. বেসলাইন প্রোফাইল গ্রেডল প্লাগইন যোগ করুন ( libs.plugins.androidx.baselineprofile )। প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে তাদের বজায় রাখা সহজ করে তোলে।

  4. বেসলাইন প্রোফাইল তৈরি করতে, টার্মিনালে :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালান।

    একটি রুটেড ফিজিক্যাল ডিভাইস, এমুলেটর বা গ্র্যাডল ম্যানেজড ডিভাইসে ইন্সট্রুমেন্টেড টেস্ট হিসেবে জেনারেটর চালান। আপনি যদি একটি গ্রেডল ম্যানেজড ডিভাইস ব্যবহার করেন, তাহলে aosp systemImageSource হিসাবে সেট করুন, কারণ বেসলাইন প্রোফাইল জেনারেটরের জন্য আপনার রুট অ্যাক্সেস প্রয়োজন।

    জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

টেমপ্লেট ছাড়াই একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আমরা অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইল মডিউল টেমপ্লেট (পছন্দের) বা ম্যাক্রোবেঞ্চমার্ক টেমপ্লেট ব্যবহার করে একটি বেসলাইন প্রোফাইল তৈরি করার পরামর্শ দিই, তবে আপনি নিজে থেকেই বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করতে পারেন। বেসলাইন প্রোফাইল গ্রেডল প্লাগইন সম্পর্কে আরও পড়তে, আপনার বেসলাইন প্রোফাইল প্রজন্ম কনফিগার করুন দেখুন।

বেসলাইন প্রোফাইল গ্রেডল প্লাগইনটি সরাসরি ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে রয়েছে:

  1. একটি নতুন com.android.test মডিউল তৈরি করুন—উদাহরণস্বরূপ, :baseline-profile
  2. এর জন্য build.gradle.kts ফাইল কনফিগার করুন :baseline-profile :

    1. androidx.baselineprofile প্লাগইন প্রয়োগ করুন।
    2. targetProjectPath :app মডিউলে পয়েন্ট করে তা নিশ্চিত করুন।
    3. ঐচ্ছিকভাবে, একটি গ্রেডল-ম্যানেজড ডিভাইস (GMD) যোগ করুন। নিম্নলিখিত উদাহরণে, এটি pixel6Api31 । যদি নির্দিষ্ট করা না থাকে, প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, হয় অনুকরণ করা বা শারীরিক।
    4. আপনি যে কনফিগারেশন চান তা প্রয়োগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

    কোটলিন

    plugins {
        id("com.android.test")
        id("androidx.baselineprofile")
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath = ":app"
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device = "Pixel 6"
                apiLevel = 31
                systemImageSource = "aosp"
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices += "pixel6Api31"
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices = false
    }
    

    গ্রোভি

    plugins {
        id 'com.android.test'
        id 'androidx.baselineprofile'
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath ':app'
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device 'Pixel 6'
                apiLevel 31
                systemImageSource 'aosp'
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices ['pixel6Api31']
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices false
    }
    
  3. :baseline-profile টেস্ট মডিউলে একটি বেসলাইন প্রোফাইল পরীক্ষা তৈরি করুন। নিম্নলিখিত উদাহরণটি একটি পরীক্ষা যা অ্যাপটি শুরু করে এবং নিষ্ক্রিয় হওয়ার জন্য অপেক্ষা করে।

    কোটলিন

    class BaselineProfileGenerator {
    
        @get:Rule
        val baselineRule = BaselineProfileRule()
    
        @Test
        fun startupBaselineProfile() {
            baselineRule.collect("com.myapp") {
                startActivityAndWait()
            }
        }
    }
    

    জাভা

    public class BaselineProfileGenerator {
    
        @Rule
        Public BaselineProfileRule baselineRule = new BaselineProfileRule();
    
        @Test
        Public void startupBaselineProfile() {
            baselineRule.collect(
                "com.myapp",
                (scope -> {
                    scope.startActivityAndWait();
                    Return Unit.INSTANCE;
                })
            )
        }
    }
    
  4. অ্যাপ মডিউলে build.gradle.kts ফাইলটি আপডেট করুন, উদাহরণস্বরূপ :app

    1. প্লাগইন androidx.baselineprofile প্রয়োগ করুন।
    2. :baseline-profile মডিউলে একটি baselineProfile নির্ভরতা যোগ করুন।

    কোটলিন

    plugins {
        id("com.android.application")
        id("androidx.baselineprofile")
    }
    
    android {
        // There are no changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile(project(":baseline-profile"))
    }
    

    গ্রোভি

    plugins {
        id 'com.android.application'
        id 'androidx.baselineprofile'
    }
    
    android {
        // No changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile ':baseline-profile"'
    }
    
  5. :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালিয়ে প্রোফাইল তৈরি করুন৷

  6. জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

AGP 7.3-7.4 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

AGP 7.3-7.4 দিয়ে বেসলাইন প্রোফাইল তৈরি করা সম্ভব, কিন্তু আমরা দৃঢ়ভাবে অন্তত AGP 8.1-এ আপগ্রেড করার সুপারিশ করছি যাতে আপনি বেসলাইন প্রোফাইল গ্রেডল প্লাগইন এবং এর সর্বশেষ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।

আপনি যদি AGP 7.3-7.4 এর সাথে বেসলাইন প্রোফাইল তৈরি করতে চান, তাহলে ধাপগুলি AGP 8.1-এর ধাপগুলির মতোই, নিম্নলিখিত ব্যতিক্রমগুলি সহ:

ম্যানুয়ালি উত্পন্ন নিয়ম প্রয়োগ করুন

বেসলাইন প্রোফাইল জেনারেটর ডিভাইসে একটি হিউম্যান রিডেবল ফরম্যাট (HRF) টেক্সট ফাইল তৈরি করে এবং এটি আপনার হোস্ট মেশিনে কপি করে। আপনার কোডে জেনারেট করা প্রোফাইল প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি যে মডিউলে প্রোফাইল তৈরি করেন তার বিল্ড ফোল্ডারে HRF ফাইলটি সনাক্ত করুন: [module]/build/outputs/managed_device_android_test_additional_output/[device]

    প্রোফাইলগুলি [class name]-[test method name]-baseline-prof.txt নামকরণের প্যাটার্ন অনুসরণ করে, যা এইরকম দেখায়: BaselineProfileGenerator-startup-baseline-prof.txt

  2. জেনারেট করা প্রোফাইলটিকে src/main/ এ কপি করুন এবং ফাইলটির নাম পরিবর্তন করে baseline-prof.txt

  3. যেখানে ক্লাউড প্রোফাইল উপলব্ধ নেই সেখানে স্থানীয় বেসলাইন প্রোফাইল সংকলন সক্ষম করতে আপনার অ্যাপের build.gradle.kts ফাইলে ProfileInstaller লাইব্রেরিতে একটি নির্ভরতা যোগ করুন। এটি স্থানীয়ভাবে একটি বেসলাইন প্রোফাইল সাইডলোড করার একমাত্র উপায়।

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.3.1")
    }
    
  4. প্রয়োগকৃত HRF নিয়মগুলি বাইনারি আকারে সংকলিত এবং APK বা AAB-তে অন্তর্ভুক্ত করার সময় আপনার অ্যাপের উত্পাদন সংস্করণ তৈরি করুন। তারপর যথারীতি আপনার অ্যাপ বিতরণ করুন।

বেসলাইন প্রোফাইল বেঞ্চমার্ক

আপনার বেসলাইন প্রোফাইল বেঞ্চমার্ক করতে, গাটার অ্যাকশন থেকে একটি নতুন অ্যান্ড্রয়েড ইন্সট্রুমেন্টেড টেস্ট রান কনফিগারেশন তৈরি করুন যা StartupBenchmarks.kt বা StartupBencharks.java ফাইলে সংজ্ঞায়িত বেঞ্চমার্কগুলি কার্যকর করে৷ বেঞ্চমার্ক পরীক্ষা সম্পর্কে আরও জানতে, একটি ম্যাক্রোবেঞ্চমার্ক ক্লাস তৈরি করুন এবং ম্যাক্রোবেঞ্চমার্ক লাইব্রেরির সাথে স্বয়ংক্রিয় পরিমাপ দেখুন।

চিত্র 3. গাটার অ্যাকশন থেকে অ্যান্ড্রয়েড টেস্ট চালান।

আপনি যখন এটি অ্যান্ড্রয়েড স্টুডিওর মধ্যে চালান, তখন বিল্ড আউটপুটে বেসলাইন প্রোফাইল প্রদান করে গতির উন্নতির বিবরণ থাকে:

StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs   min 161.8,   median 178.9,   max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs   min 184.7,   median 196.9,   max 202.9

সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন

অ্যাপ শুরুর সময় পরিমাপের জন্য দুটি মূল মেট্রিক নিম্নরূপ:

প্রাথমিক প্রদর্শনের সময় (TTID)
অ্যাপ্লিকেশন UI এর প্রথম ফ্রেমটি প্রদর্শন করতে যে সময় লাগে।
সম্পূর্ণ প্রদর্শনের সময় (TTFD)
TTID প্লাস প্রাথমিক ফ্রেম প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনাসভাবে লোড করা সামগ্রী প্রদর্শনের সময়।

ComponentActivity এর reportFullyDrawn() পদ্ধতি কল করা হলে TTFD রিপোর্ট করা হয়। যদি reportFullyDrawn() কখনই কল না করা হয়, তার পরিবর্তে TTID রিপোর্ট করা হয়। অসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত reportFullyDrawn() কল করা হলে আপনাকে বিলম্ব করতে হতে পারে। উদাহরণস্বরূপ, যদি UI-তে একটি গতিশীল তালিকা থাকে যেমন একটি RecyclerView বা অলস তালিকা , তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা পপুলেট হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, UI সম্পূর্ণরূপে আঁকা হিসাবে চিহ্নিত করার পরে। এই ধরনের ক্ষেত্রে, UI সম্পূর্ণরূপে আঁকা অবস্থায় পৌঁছানোর পরে যে কোড চলে তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত করা হয় না।

আপনার বেসলাইন প্রোফাইলের অংশ হিসাবে তালিকার জনসংখ্যা অন্তর্ভুক্ত করতে, getFullyDrawnReporter() ব্যবহার করে FullyDrawnReporter পান এবং আপনার অ্যাপ কোডে এটিতে একজন রিপোর্টার যোগ করুন। ব্যাকগ্রাউন্ড টাস্ক তালিকাটি পূরণ করার পরে রিপোর্টারকে ছেড়ে দিন। FullyDrawnReporter সমস্ত রিপোর্টার মুক্তি না হওয়া পর্যন্ত reportFullyDrawn() পদ্ধতিকে কল করে না। এটি করার মাধ্যমে, বেসলাইন প্রোফাইল তালিকাটি পপুলেট করার জন্য প্রয়োজনীয় কোড পাথগুলি অন্তর্ভুক্ত করে। এটি ব্যবহারকারীর জন্য অ্যাপের আচরণ পরিবর্তন করে না, তবে এটি বেসলাইন প্রোফাইলে সমস্ত প্রয়োজনীয় কোড পাথ অন্তর্ভুক্ত করতে দেয়।

যদি আপনার অ্যাপ জেটপ্যাক কম্পোজ ব্যবহার করে, তাহলে সম্পূর্ণভাবে আঁকা অবস্থা নির্দেশ করতে নিম্নলিখিত API ব্যবহার করুন:

  • ReportDrawn নির্দেশ করে যে আপনার কম্পোজেবল অবিলম্বে ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
  • ReportDrawnWhen একটি predicate নেয়, যেমন list.count > 0 , কখন আপনার কম্পোজেবল ইন্টারঅ্যাকশনের জন্য প্রস্তুত তা নির্দেশ করতে।
  • ReportDrawnAfter একটি স্থগিত পদ্ধতি গ্রহণ করে যা, এটি সম্পূর্ণ হলে, নির্দেশ করে যে আপনার কম্পোজেবল মিথস্ক্রিয়া করার জন্য প্রস্তুত।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}