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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

যখন Generate Baseline Profile রান কনফিগারেশন সম্পন্ন হয়, তখন এটি তৈরি করা Baseline Profileটিকে প্রোফাইল করা মডিউলের src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে। variant বিকল্পগুলি হয় রিলিজ বিল্ড টাইপ অথবা রিলিজ বিল্ড টাইপ জড়িত একটি বিল্ড ভ্যারিয়েন্ট।

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

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

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

Macrobenchmark মডিউল টেমপ্লেট এবং Baseline Profile Gradle প্লাগইন ব্যবহার করে একটি নতুন Baseline Profile তৈরি করার ধাপগুলি এখানে দেওয়া হল:

  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 Gradle টাস্কগুলি চালান।

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

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

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

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

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

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

    1. androidx.baselineprofile প্লাগইনটি প্রয়োগ করুন।
    2. নিশ্চিত করুন যে targetProjectPath :app মডিউলের দিকে নির্দেশ করছে।
    3. ঐচ্ছিকভাবে, একটি Gradle-managed device (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 test মডিউলে একটি Baseline Profile test তৈরি করুন। নিম্নলিখিত উদাহরণটি এমন একটি পরীক্ষা যা অ্যাপটি শুরু করে এবং নিষ্ক্রিয় হওয়ার জন্য অপেক্ষা করে।

    কোটলিন

    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 Gradle টাস্কগুলি চালিয়ে প্রোফাইল তৈরি করুন।

  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.4.1")
    }
    
  4. প্রয়োগকৃত HRF নিয়মগুলি বাইনারি আকারে সংকলিত হয়ে APK বা AAB-তে অন্তর্ভুক্ত থাকাকালীন আপনার অ্যাপের উৎপাদন সংস্করণ তৈরি করুন। তারপর যথারীতি আপনার অ্যাপটি বিতরণ করুন।

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

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

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

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

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 বা lazy list এর মতো একটি গতিশীল তালিকা থাকে, তাহলে তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা পূর্ণ হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, UI সম্পূর্ণ আঁকা হিসাবে চিহ্নিত হওয়ার পরে। এই ক্ষেত্রে, UI সম্পূর্ণ আঁকা অবস্থায় পৌঁছানোর পরে যে কোডটি চলে তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত করা হয় না।

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

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

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