बेसलाइन प्रोफ़ाइल बनाएं

Jetpack का इस्तेमाल करके, ऐप्लिकेशन की हर रिलीज़ के लिए अपने-आप प्रोफ़ाइलें जनरेट करें मैक्रोबेंचमार्क लाइब्रेरी और BaselineProfileRule. हमारा सुझाव है कि com.android.tools.build:gradle:8.0.0 या इसके बाद के वर्शन का इस्तेमाल करें. यह बिल्ड के साथ मिलता है बेसलाइन प्रोफ़ाइल का इस्तेमाल करते समय सुधार किए गए हैं.

नई बेसलाइन प्रोफ़ाइल बनाने के लिए, यहां कुछ सामान्य तरीके दिए गए हैं:

  1. बेसलाइन प्रोफ़ाइल मॉड्यूल सेट अप करें.
  2. JUnit टेस्ट तय करें, जो बेसलाइन प्रोफ़ाइल जनरेट करने में मदद करता है.
  3. उन क्रिटिकल यूज़र जर्नी (सीयूजे) जोड़ें जिन्हें ऑप्टिमाइज़ करना है.
  4. बेसलाइन प्रोफ़ाइल जनरेट करें.

बेसलाइन प्रोफ़ाइल जनरेट करने के बाद, किसी फ़िज़िकल डिवाइस का इस्तेमाल करके मानदंड तय करें कि स्पीड में सुधार का आकलन कर सकता है.

AGP 8.2 या इसके बाद के वर्शन वाली नई बेसलाइन प्रोफ़ाइल बनाएं

नई बेसलाइन प्रोफ़ाइल बनाने का सबसे आसान तरीका, बेसलाइन प्रोफ़ाइल का इस्तेमाल करना है मॉड्यूल टेंप्लेट, जो Android Studio Iguana और Android Gradle से शुरू होता है प्लग इन (AGP) 8.2.

Android Studio बेसलाइन प्रोफ़ाइल जनरेटर मॉड्यूल टेंप्लेट, और एक नया मॉड्यूल बनाना है, मानदंड बेसलाइन प्रोफ़ाइल. टेंप्लेट चलाने से ज़्यादातर सामान्य बिल्ड जनरेट होता है कॉन्फ़िगरेशन, बेसलाइन प्रोफ़ाइल जनरेशन, और पुष्टि करने के लिए कोड. टेम्प्लेट ऐप्लिकेशन की परफ़ॉर्मेंस का आकलन करने के लिए, बेसलाइन प्रोफ़ाइल जनरेट करने और उन्हें बेंचमार्क करने के लिए कोड बनाता है शुरू करें.

बेसलाइन प्रोफ़ाइल मॉड्यूल सेट अप करें

बेसलाइन प्रोफ़ाइल मॉड्यूल टेंप्लेट चलाने के लिए, यह तरीका अपनाएं:

  1. फ़ाइल > चुनें नया > नया मॉड्यूल
  2. बेसलाइन प्रोफ़ाइल जनरेटर टेंप्लेट को चुनें. टेंप्लेट पैनल को खोलें और उसे कॉन्फ़िगर करें:
    पहली इमेज. बेसलाइन प्रोफ़ाइल जनरेटर मॉड्यूल टेंप्लेट.

    टेंप्लेट में ये फ़ील्ड मौजूद होते हैं:

    • टारगेट ऐप्लिकेशन: तय करता है कि बेसलाइन प्रोफ़ाइल किस ऐप्लिकेशन के लिए जनरेट की गई है. जब आपके प्रोजेक्ट में सिर्फ़ एक ऐप्लिकेशन मॉड्यूल होता है, तो इस सूची में सिर्फ़ एक आइटम होता है.
    • मॉड्यूल का नाम: वह नाम जो आप बेसलाइन प्रोफ़ाइल मॉड्यूल के लिए चाहते हैं बनाया जा रहा है.
    • पैकेज का नाम: वह पैकेज नाम जो आपको बेसलाइन प्रोफ़ाइल के लिए चाहिए मॉड्यूल का इस्तेमाल नहीं किया जाएगा.
    • भाषा: आपको जनरेट किया गया कोड Kotlin बनाना है या Java.
    • कॉन्फ़िगरेशन भाषा बनाएं: क्या आपको Kotlin का इस्तेमाल करना है अपने बिल्ड कॉन्फ़िगरेशन स्क्रिप्ट के लिए स्क्रिप्ट (KTS) या Groovy.
    • Gredle से मैनेज किए जाने वाले डिवाइस का इस्तेमाल करना: चाहे किसी भी डिवाइस का इस्तेमाल किया जा रहा हो Gredle से मैनेज किए जा रहे डिवाइस, अपने ऐप्लिकेशन का परीक्षण करें.
  3. पूरा करें पर क्लिक करें और नया मॉड्यूल बन जाएगा. अगर सोर्स का इस्तेमाल किया जा रहा है कंट्रोल के लिए, आपको नई मॉड्यूल फ़ाइलों को सोर्स में जोड़ने के लिए कहा जा सकता है नियंत्रण.

बेसलाइन प्रोफ़ाइल जनरेटर तय करें

नए मॉड्यूल में टेस्ट तैयार किए जाते हैं. इनकी मदद से, बेसलाइन प्रोफ़ाइल और सिर्फ़ बेसिक ऐप्लिकेशन स्टार्टअप की जांच करें. हमारा सुझाव है कि आप इनमें सीयूजे और बेहतर स्टार्टअप वर्कफ़्लो शामिल होंगे. पक्का करें कि अगर किसी भी टेस्ट में ऐप्लिकेशन स्टार्टअप से जुड़ी चीज़ें, includeInStartupProfile सेट वाले rule ब्लॉक में हैं true तक; इसके ठीक उलट, सबसे अच्छी परफ़ॉर्मेंस के लिए यह पक्का करें कि स्टार्टअप प्रोफ़ाइल में शामिल नहीं किए जाते. ऐप्लिकेशन स्टार्टअप ऑप्टिमाइज़ेशन का इस्तेमाल बेसलाइन प्रोफ़ाइल के खास हिस्से को स्टार्टअप प्रोफ़ाइल.

अगर इन सीयूजे को जनरेट किए गए सीयूजे से बाहर निकाला जाता है, तो इससे रखरखाव में मदद मिलती है बेसलाइन प्रोफ़ाइल और मानदंड कोड, ताकि उनका इस्तेमाल दोनों के लिए किया जा सके. यह इसका मतलब है कि आपके सीयूजे में किए जाने वाले बदलाव लगातार इस्तेमाल किए जाते हैं.

बेसलाइन प्रोफ़ाइल जनरेट और इंस्टॉल करें

बेसलाइन प्रोफ़ाइल मॉड्यूल टेंप्लेट, रिपोर्ट जनरेट करने के लिए एक नया रन कॉन्फ़िगरेशन जोड़ता है बेसलाइन प्रोफ़ाइल का इस्तेमाल करें. अगर आप प्रॉडक्ट के फ़्लेवर का इस्तेमाल करते हैं, तो Android Studio कई रन कॉन्फ़िगरेशन बनाए जा सकते हैं, ताकि आप अलग-अलग बेसलाइन प्रोफ़ाइल बना सकें हर स्वाद के लिए.

बेसलाइन प्रोफ़ाइल चलाने का कॉन्फ़िगरेशन जनरेट करें.
दूसरी इमेज. इस कॉन्फ़िगरेशन को चलाने से बेसलाइन जनरेट होता है प्रोफ़ाइल पर क्लिक करें.

बेसलाइन प्रोफ़ाइल जनरेट करें रन कॉन्फ़िगरेशन पूरा होने पर, यह कॉपी हो जाता है जनरेट की गई बेसलाइन प्रोफ़ाइल src/variant/generated/baselineProfiles/baseline-prof.txt फ़ाइल होती है, जिसे प्रोफ़ाइल किया जा रहा है. वैरिएंट के विकल्प रिलीज़ बिल्ड टाइप या ऐसा बिल्ड वैरिएंट जिसमें रिलीज़ बिल्ड टाइप शामिल हो.

जनरेट की गई बेसलाइन प्रोफ़ाइल मूल रूप से build/outputs में बनाई जाती है. कॉन्टेंट बनाने ऐप्लिकेशन के पूरे पाथ को उसके वैरिएंट या फ़्लेवर के हिसाब से तय किया जाता है. चाहे प्रोफ़ाइलिंग के लिए, Gradle से मैनेज किया जाने वाला डिवाइस इस्तेमाल किया जा रहा हो या कनेक्ट किए गए किसी डिवाइस का. अगर आपने आप कोड में इस्तेमाल किए गए नामों का इस्तेमाल करते हैं और टेम्प्लेट के लिए, बेसलाइन प्रोफ़ाइल build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt फ़ाइल. आप शायद ऐसा नहीं करेंगे जनरेट की गई बेसलाइन प्रोफ़ाइल के इस वर्शन के साथ सीधे इंटरैक्ट करना होगा जब तक कि आप इसे मैन्युअल रूप से टारगेट मॉड्यूल में कॉपी न करें (हम इसका सुझाव नहीं देते).

AGP 8.1 के साथ नई बेसलाइन प्रोफ़ाइल बनाएं

अगर आपको Google Ads खाते का इस्तेमाल करने में बेसलाइन प्रोफ़ाइल मॉड्यूल टेंप्लेट के लिए, इसका इस्तेमाल करें बनाने के लिए, मैक्रोबेंचमार्क मॉड्यूल टेंप्लेट और बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन नई बेसलाइन प्रोफ़ाइल चुनें. हमारा सुझाव है कि आप Android से शुरू होने वाले इन टूल का इस्तेमाल करें स्टूडियो जिराफ़ और एजीपी 8.1.

मैक्रोबेंचमार्क का इस्तेमाल करके, नई बेसलाइन प्रोफ़ाइल बनाने का तरीका यहां बताया गया है मॉड्यूल टेंप्लेट और बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन:

  1. सेट अपने Gradle प्रोजेक्ट में मैक्रोबेंचमार्क मॉड्यूल तैयार करना होगा.
  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:generateVariantBaselineProfile Gradle टास्क टर्मिनल.

    जनरेटर को इंस्ट्रुमेंटेड टेस्ट के तौर पर चलाएं रूट किए गए डिवाइस, एम्युलेटर या Gradle मैनेज किया जा रहा डिवाइस. अगर Gradle से मैनेज किया जाने वाला डिवाइस इस्तेमाल किया जा रहा है, तो aosp को systemImageSource के तौर पर सेट करें, क्योंकि आपको रूट करना होगा बेसलाइन प्रोफ़ाइल जनरेटर का ऐक्सेस.

    जनरेशन टास्क खत्म होने पर, बेसलाइन प्रोफ़ाइल app/src/variant/generated/baselineProfiles.

टेंप्लेट के बिना एक नई बेसलाइन प्रोफ़ाइल बनाएं

हमारा सुझाव है कि आप Android Studio का इस्तेमाल करके बेसलाइन प्रोफ़ाइल बनाएं बेसलाइन प्रोफ़ाइल मॉड्यूल टेंप्लेट (पसंदीदा) या मैक्रोबेंचमार्क टेंप्लेट, लेकिन आप इसके अलावा, अपने-आप बेसलाइन प्रोफ़ाइल Gradle प्लग इन का भी इस्तेमाल किया जा सकता है. इस बारे में ज़्यादा जानने के लिए बेसलाइन प्रोफ़ाइल Gradle प्लग इन, देखें बुनियादी प्रोफ़ाइल बनाने की सुविधा कॉन्फ़िगर करें.

बेसलाइन प्रोफ़ाइल ग्रेडल प्लगिन का इस्तेमाल करके बेसलाइन प्रोफ़ाइल बनाने का तरीका यहां बताया गया है सीधे:

  1. एक नया com.android.test मॉड्यूल बनाएं—उदाहरण के लिए, :baseline-profile.
  2. इसके लिए build.gradle.kts फ़ाइल को कॉन्फ़िगर करें :baseline-profile:

    1. androidx.baselineprofile प्लगिन को लागू करें.
    2. पक्का करें कि targetProjectPath :app मॉड्यूल.
    3. वैकल्पिक रूप से, Gradle से मैनेज किया जाने वाला डिवाइस (GMD). नीचे दिए गए उदाहरण में, यह pixel6Api31 है. अगर इसके बारे में नहीं बताया गया है, यह प्लगिन किसी कनेक्ट किए गए डिवाइस का इस्तेमाल करता है. भले ही, वह एम्युलेट हो या फ़िज़िकल डिवाइस.
    4. अपनी पसंद का कॉन्फ़िगरेशन लागू करें, जैसा कि यहां दिखाया गया है उदाहरण के लिए.

    Kotlin

    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 में बेसलाइन प्रोफ़ाइल टेस्ट बनाएं टेस्ट मॉड्यूल. नीचे दिया गया उदाहरण एक ऐसी जांच है जो ऐप्लिकेशन को शुरू करके इंतज़ार करती है का इस्तेमाल करें.

    Kotlin

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

    Java

    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 डिपेंडेंसी जोड़ें.

    Kotlin

    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:generateVariantBaselineProfile Gradle टास्क.

  6. जनरेशन टास्क खत्म होने पर, बेसलाइन प्रोफ़ाइल app/src/variant/generated/baselineProfiles.

एजीपी 7.3-7.4 के साथ नई बेसलाइन प्रोफ़ाइल बनाएं

एजीपी 7.3-7.4 के साथ बेसलाइन प्रोफ़ाइल जनरेट की जा सकती हैं, लेकिन हम पूरी तरह से AGP के कम से कम 8.1 वर्शन पर अपग्रेड करें, ताकि आप बेसलाइन प्रोफ़ाइल का इस्तेमाल कर सकें Gradle प्लग इन और इसकी नई सुविधाएं.

अगर आपको एजीपी 7.3-7.4 के साथ बेसलाइन प्रोफ़ाइल बनाने की ज़रूरत है, तो इसका तरीका पहले जैसा ही है AGP 8.1 के चरणों के बारे में बताया गया है. अपवाद:

जनरेट किए गए नियमों को मैन्युअल तरीके से लागू करें

बेसलाइन प्रोफ़ाइल जनरेटर, ह्यूमन रीडेबल फ़ॉर्मैट (एचआरएफ़) टेक्स्ट फ़ाइल बनाता है और इसे आपकी होस्ट मशीन पर कॉपी कर देता है. जनरेट की गई प्रोफ़ाइल को लागू करने के लिए तो इन चरणों का पालन करें:

  1. जिस मॉड्यूल को जनरेट किया जाएगा उसके बिल्ड फ़ोल्डर में एचआरएफ़ फ़ाइल ढूंढें इसमें प्रोफ़ाइल बनाएं: [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. ProfileInstaller लाइब्रेरी में डिपेंडेंसी जोड़ें अपने ऐप्लिकेशन की build.gradle.kts फ़ाइल में जाकर लोकल बेसलाइन प्रोफ़ाइल चालू करें कंपाइलेशन, जिसमें Cloud प्रोफ़ाइल उपलब्ध नहीं होती हैं. यह है का इस्तेमाल, बेसलाइन प्रोफ़ाइल को अलग से लोड करने का सिर्फ़ एक ही तरीका है.

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.3.1")
    }
    
  4. अपने ऐप्लिकेशन का प्रोडक्शन वर्शन तब बनाएं, जब एचआरएफ़ के लागू नियम लागू हों बाइनरी फ़ॉर्म में कंपाइल करके APK या एएबी में शामिल किया जाता है. इसके बाद, डिस्ट्रिब्यूट करें आपका ऐप्लिकेशन हमेशा की तरह.

बेसलाइन प्रोफ़ाइल को बेंचमार्क करें

अपनी बेसलाइन प्रोफ़ाइल का मानदंड बनाने के लिए, नया Android इंस्ट्रुमेंटेड टेस्ट रन बनाएं गटर ऐक्शन से जुड़ा कॉन्फ़िगरेशन, जो इसमें तय किए गए मानदंड को एक्ज़ीक्यूट करता है StartupBenchmarks.kt या StartupBencharks.java फ़ाइल. मानदंड के बारे में ज़्यादा जानने के लिए की जांच करने के लिए, एक मैक्रोबेंचमार्क बनाएं क्लास और मैक्रोबेंचमार्क की मदद से, अपने-आप मेज़रमेंट होने की सुविधा का इस्तेमाल करें लाइब्रेरी पर जाएं.

तीसरी इमेज. गटर से Android टेस्ट चलाएं कार्रवाई.

इसे Android Studio में चलाने पर, बिल्ड आउटपुट में बेसलाइन प्रोफ़ाइल से मिलने वाले स्पीड में सुधार किए गए हैं:

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)
ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) का पहला फ़्रेम दिखाने में लगने वाला समय.
फ़ुल डिसप्ले में लगने वाला समय (टीटीएफ़डी)
टीटीआईडी और शुरुआती फ़्रेम के दिखने के बाद, एसिंक्रोनस तरीके से लोड होने वाले कॉन्टेंट को दिखाने में लगने वाला समय.

टीटीएफ़डी की शिकायत तब की जाती है, जब reportFullyDrawn() का तरीका ComponentActivity को कॉल किया जाता है. अगर reportFullyDrawn() को कभी कॉल नहीं किया जाता है, तो TTID की रिपोर्ट की जाएगी आज़माएं. reportFullyDrawn() को कॉल करने से पहले, आपको देरी करनी पड़ सकती है एसिंक्रोनस लोड हो गए हैं. उदाहरण के लिए, अगर यूज़र इंटरफ़ेस (यूआई) में कोई डाइनैमिक RecyclerView या लेज़ी सूची, सूची में किसी बैकग्राउंड से भरा जा सकता है वह टास्क जो सूची को पहले बनाए जाने के बाद पूरा होता है. ऐसा यूज़र इंटरफ़ेस (यूआई) के बाद भी होता है को 'पूरी तरह से तैयार किया गया' के तौर पर मार्क किया गया है. ऐसे मामलों में, यूज़र इंटरफ़ेस (यूआई) के पूरी तरह से बनाई गई स्थिति को बेसलाइन प्रोफ़ाइल में शामिल नहीं किया जाता है.

सूची में मौजूद लोगों को अपनी बेसलाइन प्रोफ़ाइल के हिस्से के रूप में शामिल करने के लिए, FullyDrawnReporter getFullyDrawnReporter() और अपने ऐप्लिकेशन कोड में रिपोर्टर को जोड़ दें. एक बार रिपोर्टर को रिलीज़ कर दें बैकग्राउंड में होने वाले टास्क में, सूची में जानकारी अपने-आप भरी जा चुकी है. FullyDrawnReporter यह नहीं करता है जब तक सभी रिपोर्टर रिलीज़ नहीं हो जाते, तब तक reportFullyDrawn() तरीके को कॉल करें. ऐसा करके इसके बाद, बेसलाइन प्रोफ़ाइल में वे कोड पाथ शामिल होते हैं जो सूची को भरने के लिए ज़रूरी हैं. इससे उपयोगकर्ता के लिए ऐप्लिकेशन के काम करने के तरीके में बदलाव नहीं होता. हालांकि, इससे बेसलाइन को प्रोफ़ाइल में सभी ज़रूरी कोड पाथ शामिल हैं.

अगर आपका ऐप्लिकेशन Jetpack Compose का इस्तेमाल करता है, तो इन एपीआई का इस्तेमाल करके पूरी तरह से बनाई गई स्थिति दिखाएं:

  • ReportDrawn इससे पता चलता है कि आपका कंपोज़ेबल, इंटरैक्शन के लिए तुरंत तैयार है.
  • ReportDrawnWhen एक प्रेडिकेट लेता है, जैसे कि list.count > 0. इससे यह पता चलता है कि कब आपका composable, इंटरैक्शन के लिए तैयार है.
  • ReportDrawnAfter निलंबित करने का तरीका इस्तेमाल करता है, जो इसके पूरा होने पर यह बताता है कि composable, इंटरैक्शन के लिए तैयार है.