रनटाइम लिखें

Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक और टारगेट करने के लिए Compose कंपाइलर प्लगिन के कोर रनटाइम.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
24 जुलाई, 2024 1.6.8 - 1.7.0-बीटा06 -

संरचना

androidx में सात Maven ग्रुप आईडी, एक साथ मिलकर बनाए जाते हैं. हर ग्रुप इसमें फ़ंक्शन का एक सबसेट शामिल होता है, जिसमें हर एक की रिलीज़ का एक सेट होता है नोट.

इस टेबल में, रिलीज़ नोट के हर सेट के ग्रुप और लिंक के बारे में बताया गया है.

ग्रुपब्यौरा
compos.animationउपयोगकर्ता अनुभव को बेहतर बनाने के लिए, उनके Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं.
compos.compiler क्या है@Composable फ़ंक्शन को ट्रांसफ़ॉर्म करें और Kotlin कंपाइलर प्लगिन की मदद से ऑप्टिमाइज़ेशन चालू करें.
compos.foundationबिल्डिंग ब्लॉक इस्तेमाल करने के लिए तैयार Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने खुद के डिज़ाइन सिस्टम के हिस्से बनाने के लिए आधार बढ़ाएं.
compos.materialमटीरियल डिज़ाइन कॉम्पोनेंट इस्तेमाल करने के लिए तैयार Jetpack Compose के यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का उच्च लेवल का एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं.
compos.material3मटीरियल डिज़ाइन 3 कॉम्पोनेंट के साथ Jetpack Compose का यूज़र इंटरफ़ेस बनाएं. यह मटीरियल डिज़ाइन का अगला वर्शन है. मटीरियल 3 में अपडेट की गई थीम और कॉम्पोनेंट शामिल हैं. साथ ही, इसमें Material You के मनमुताबिक बनाई गई डाइनैमिक कलर जैसी सुविधाएं शामिल हैं. इसे Android 12 के विज़ुअल स्टाइल और सिस्टम के यूज़र इंटरफ़ेस (यूआई) के हिसाब से डिज़ाइन किया गया है.
compos.runtimeCompose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक और टारगेट करने के लिए Compose कंपाइलर प्लगिन के कोर रनटाइम.
compos.uiडिवाइस से इंटरैक्ट करने के लिए कंपोज़ यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट की ज़रूरत होती है. इसमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं.

डिपेंडेंसी तय करना

Compose पर डिपेंडेंसी जोड़ने के लिए, आपको Google Maven रिपॉज़िटरी को अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.

उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle फ़ाइल में ज़रूरत है आपका ऐप्लिकेशन या मॉड्यूल:

Groovy

dependencies {
    implementation "androidx.compose.runtime:runtime:1.6.8"
    implementation "androidx.compose.runtime:runtime-livedata:1.6.8"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.6.8"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.6.8")
    implementation("androidx.compose.runtime:runtime-livedata:1.6.8")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.6.8")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको नई समस्याओं का पता चलता है या आपको इस लाइब्रेरी को बेहतर बनाने के लिए आइडिया मिल सकते हैं. कृपया, इस मौजूदा समस्याएं इस लाइब्रेरी में जोड़ें. किसी मौजूदा समस्या के लिए अपना वोट दें. इसके लिए ये तरीके अपनाएं: स्टार बटन पर क्लिक करके ऐसा किया जा सकता है.

नई समस्या जोड़ें

समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें हमारा वीडियो देखें.

रनटाइम ट्रेसिंग वर्शन 1.0

वर्शन 1.0.0-beta01

29 नवंबर, 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये कमिट मौजूद हैं.

वर्शन 1.0.0-alpha05

15 नवंबर, 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • सबसे कम काम करने वाले स्टेबल वर्शन के लिए डिपेंडेंसी पिन की गई.जैसे, कंपोज़-रनटाइम और ट्रेसिंग-परफ़ेटो. यह समस्या को ठीक करने की वजह से, कंपोज़-रनटाइम-ट्रेसिंग से, ऐप्लिकेशन में कंपोज़ रनटाइम का नया वर्शन आ जाएगा.

वर्शन 1.0.0-alpha04

23 अगस्त, 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमियां हैं.

नई सुविधाएं

  • यह बेंचमार्क और ट्रेसिंग परफ़ेटो के नए वर्शन के साथ काम करती है.साथ ही, ऐप्लिकेशन शुरू होने (कोल्ड स्टार्ट) पर कंपोज़िशन ट्रेसिंग की सुविधा देती है. उदाहरण के लिए, कोल्ड स्टार्ट और Android Studio (Hedgehog Beta 2) से शुरू किए गए हैं.

एपीआई में बदलाव

  • androidx.tracing.perfetto.Trace का नाम बदलकर androidx.tracing.perfetto.PerfettoSdkTrace किया. (I44af8)
  • ट्रेसिंग परफ़ेटो SDK टूल के एपीआई को android.os.Trace के साथ एक जैसा बनाया जा रहा है. (I73ba0, b/282199917)
  • ऐप्लिकेशन शुरू होने पर ट्रेस करने के लिए ज़रूरी शर्तें. (Iad890)
  • मर्ज की गई प्रयोगात्मक और सार्वजनिक API फ़ाइलें (I0f2e1, b/278769092)

वर्शन 1.0.0-alpha02

8 फ़रवरी, 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये कमियां हैं.

नई सुविधाएं

  • फ़ंक्शन में कोई बदलाव नहीं हुआ है. डाउनस्ट्रीम डिपेंडेंसी में कई परफ़ॉर्मेंस ऑप्टिमाइज़ेशन androidx.tracing:tracing-perfetto*.

वर्शन 1.0.0-alpha01

7 सितंबर, 2022

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमियां हैं.

नई सुविधाएं

  • androidx.compose.runtime:runtime-tracing एक लाइब्रेरी है, जो इसके साथ काम करने वाले टूल के साथ उपलब्ध है (जल्द आ रही है) - यह Compose ऐप्लिकेशन में एक्सटेंडेड ट्रेसिंग की सुविधा देती है. यह शुरुआती रिलीज़ 1.0.0-alpha01 है.

वर्शन 1.7

वर्शन 1.7.0-beta06

24 जुलाई, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta06 रिलीज़ हो गया है. वर्शन 1.7.0-beta06 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-beta05

10 जुलाई, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta05 रिलीज़ हो गया है. वर्शन 1.7.0-beta05 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-beta04

26 जून, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 रिलीज़ हो गया है. वर्शन 1.7.0-beta04 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-beta03

12 जून, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta03 रिलीज़ हो गया है. वर्शन 1.7.0-beta03 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-beta02

29 मई, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta02 रिलीज़ हो गया है. वर्शन 1.7.0-beta02 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-beta01

14 मई, 2024

androidx.compose.runtime:runtime-*:1.7.0-beta01 रिलीज़ हो गया है. वर्शन 1.7.0-beta01 में ये प्रतिबद्धताएं शामिल हैं.

वर्शन 1.7.0-alpha08

1 मई, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha08 रिलीज़ हो गया है. वर्शन 1.7.0-alpha08 में ये कमिट मौजूद हैं.

वर्शन 1.7.0-alpha07

17 अप्रैल, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha07 रिलीज़ हो गया है. वर्शन 1.7.0-alpha07 में ये कमिट मौजूद हैं.

नई सुविधाएं

  • एक ऐसी कंपोज़िशन स्थानीय देने की सुविधा जोड़ी गई जिसे डिफ़ॉल्ट रूप से, compositionLocalWithComputedDefault() का इस्तेमाल करके या provides के बजाय providesComputed का इस्तेमाल करके वैल्यू की गणना करने के लिए लैम्डा उपलब्ध करके, अन्य कंपोज़िशन लोकल की वैल्यू के आधार पर गणना की जाती है.
  • किसी कंपोज़िशन लोकल की वैल्यू पाने के लिए, उस कंपोज़िशन की currentValue प्रॉपर्टी का इस्तेमाल करें जिसे लैम्डा में मौजूद वैल्यू का पता लगाने के लिए इस्तेमाल किया जा सकता है. इसका इस्तेमाल current की जगह किया जाता है, जिसे सिर्फ़ @Composable फ़ंक्शन में ऐक्सेस किया जा सकता है. (Iadbc0)

एपीआई में बदलाव

  • नए बनाए गए स्टेट ऑब्जेक्ट को उनकी शुरुआती स्थिति के साथ, अन्य स्नैपशॉट से तुरंत ऐक्सेस किया जा सकता है. इनमें ग्लोबल स्नैपशॉट भी शामिल हैं. बाद में होने वाला कोई भी बदलाव तब तक नहीं दिखता, जब तक वह स्नैपशॉट नहीं दिखता जिसमें ऑब्जेक्ट बनाया गया था.
  • mutableStateOf() और उनके शुरुआती वर्शन की शुरुआती स्थिति, वह वैल्यू होती है जिसे mutableStateOf() को पैरामीटर के तौर पर पास किया जाता है. mutableStateListOf() और mutableStateMapOf() की शुरुआती स्थिति खाली है.
  • Snapshot.isInSnapshot और Snapshot.PreexistingSnapshotId को जोड़ा गया. इनकी मदद से, स्टेट ऑब्जेक्ट को बनाए जाने के बाद, उसे ग्लोबल स्नैपशॉट से तुरंत ऐक्सेस करने की सुविधा दी जाती है.
  • कस्टम स्टेट ऑब्जेक्ट, पहले से मौजूद स्नैपशॉट ऑब्जेक्ट में किए गए बदलावों के पैटर्न का इस्तेमाल करके, तुरंत ऐक्सेस किए जा सकते हैं. (I84a17)

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए स्नैपशॉट में readObserver को मर्ज करना तय किया गया. इसकी वजह से, snapshotFlow में इस्तेमाल किए जाने पर नेस्ट किए गए स्टेटस मान्य नहीं हैं. (आईडीएफ़138)

वर्शन 1.7.0-alpha06

3 अप्रैल, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये कमिट मौजूद हैं.

गड़बड़ियां ठीक की गईं

  • providesDefault (538f45) को हैंडल करने वाली सिंगल वैल्यू देने की समस्या ठीक करें
  • रीकंपोज़र में फ़्रेम क्लॉक (07e5c6) तक पहुंचने के लिए डेडलॉक से बचें

वर्शन 1.7.0-alpha05

20 मार्च, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 रिलीज़ हो गया है. वर्शन 1.7.0-alpha05 में ये कमिट मौजूद हैं.

गड़बड़ियां ठीक की गईं

  • बंद की गई कंपोज़िशन पर, देरी से किए गए बदलावों को हटाना (5950bc)

वर्शन 1.7.0-alpha04

6 मार्च, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 रिलीज़ हो गया है. वर्शन 1.7.0-alpha04 में ये कमिट मौजूद हैं.

परफ़ॉर्मेंस में सुधार

  • हर राज्य के हिसाब से इवैलुएशन के आधार पर, Snapshot.current को एक बार कॉल करें (ee7daf)
  • कंपोज़िशन में हर ऑब्ज़र्वेशन के लिए एक बार currentRecord पढ़ें (b882b2)
  • snapshotFlow (231e56) में, अनजाने में होने वाले इटरेटर के बंटवारे को हटाएं
  • लिखने की लाइब्रेरी के लिए nonSkippingGroupOptimization चालू करें. इसकी वजह से, androidx में सभी कंपोज़ेबल को फिर से चालू नहीं किए जा सकने वाले फ़ंक्शन के लिए जनरेट किया गया कोड ज़्यादा असरदार होता है. आने वाले समय में, हम इसे डिफ़ॉल्ट रूप से चालू करने की योजना बना रहे हैं. अ(acbc08)

वर्शन 1.7.0-alpha03

21 फ़रवरी, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये कमियां हैं.

एपीआई में बदलाव

  • बदलावों का बेहतर तरीके से पता लगाने के लिए, ग्रुप बदलें (0941b5)

परफ़ॉर्मेंस में सुधार

  • बदलावों का पता लगाते समय, मेमोरी का बंटवारा बेहतर बनाएं (53e7fd)
  • कंपोज़र (0e097d) में मेमोरी लीक को ठीक करना
  • इसे फिर से लिखते समय, अमान्य वैल्यू को पास करने के लिए ScopeMap का इस्तेमाल करें (e19a7e)
  • सिर्फ़ जनरेट की गई स्थितियां बनाए रखने के लिए, Optimize के अमान्य होने की जानकारी को मैप करें (f11c44)
  • IdentityArraySet इस्तेमाल को ScatterSet (db572e) से बदलें
  • ScopeMap में removeScope को ऑप्टिमाइज़ करें (bb0530)

वर्शन 1.7.0-alpha02

7 फ़रवरी, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • एक ही फ़्रेम में, सब-कंपोज़िशन में कंपोज़ेबल लैम्डा को अमान्य करें. (98301सी)
  • onRelease के कॉलबैक को उसी क्रम में कॉल करें जिसमें onForgotten है. (2cd790)
  • बदली गई उन स्थितियों को फ़िल्टर करें जो snapshotFlow में नहीं दिख रही हैं. (796b80)

परफ़ॉर्मेंस में सुधार

  • जब स्नैपशॉट पहले से ही पारदर्शी हो, तो उसके साथ स्नैपशॉट ऑब्ज़र्वर को बदलें. (f60f30)
  • SnapshotIdSet.lowest() ऑप्टिमाइज़ करें. (7ae149)
  • SnapshotIdSet में fold() के लिए, बिना बजट वाला हिस्सा इस्तेमाल करें. (532b7d)
  • इटरेटर ऐलोकेशन को हटाएं (83f96b)

वर्शन 1.7.0-alpha01

24 जनवरी, 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 रिलीज़ हो गया है. वर्शन 1.7.0-alpha01 में ये कमियां हैं.

परफ़ॉर्मेंस ऑप्टिमाइज़ेशन

  • चाइल्ड ग्रुप को जोड़ने के बाद, स्लॉट बनाने की सुविधा जोड़ें (b5960c)
  • स्नैपशॉट स्टेटस के रिकॉर्डिंग बदलावों को ऑप्टिमाइज़ करें (28c3fe)
  • स्किप करने का मज़बूत मोड चालू करें (ed1766)

गड़बड़ियां ठीक की गईं

  • 'आम तौर पर याद रखें' सुविधा में डिफ़ॉल्ट पैरामीटर के मेटा से जुड़ा खाता (096665)
  • ज़्यादा मामलों में, currentCompoundHashKey को यूनीक बनाएं (d4a872)
  • इनलाइन फ़ंक्शन कॉल (2a90fc) से बाहर निकलने पर, ग्रुप का पता लगाएं

वर्शन 1.6

वर्शन 1.6.8

12 जून, 2024

androidx.compose.runtime:runtime-*:1.6.8 रिलीज़ हो गया है. वर्शन 1.6.8 में ये बातें शामिल हैं.

वर्शन 1.6.7

1 मई, 2024

androidx.compose.runtime:runtime-*:1.6.7 रिलीज़ हो गया है. वर्शन 1.6.7 में ये बातें शामिल हैं.

वर्शन 1.6.6

17 अप्रैल, 2024

androidx.compose.runtime:runtime-*:1.6.6 रिलीज़ हो गया है. पिछली बार रिलीज़ होने के बाद से कोई बदलाव नहीं किया गया है.

वर्शन 1.6.5

3 अप्रैल, 2024

androidx.compose.runtime:runtime-*:1.6.5 रिलीज़ हो गया है. वर्शन 1.6.5 में ये बातें शामिल हैं.

वर्शन 1.6.4

20 मार्च, 2024

androidx.compose.runtime:runtime-*:1.6.4 रिलीज़ हो गया है. वर्शन 1.6.4 में ये बातें शामिल हैं.

वर्शन 1.6.3

6 मार्च, 2024

androidx.compose.runtime:runtime-*:1.6.3 रिलीज़ हो गया है. वर्शन 1.6.3 में ये शर्तें शामिल हैं.

वर्शन 1.6.2

21 फ़रवरी, 2024

androidx.compose.runtime:runtime-*:1.6.2 रिलीज़ हो गया है. वर्शन 1.6.2 में ये कमियां शामिल हैं.

वर्शन 1.6.1

7 फ़रवरी, 2024

androidx.compose.runtime:runtime-*:1.6.1 रिलीज़ हो गया है. वर्शन 1.6.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • onRelease के कॉलबैक को उसी क्रम में कॉल करें जिसमें onForgotten है. (2cd790)
  • बदली गई उन स्थितियों को फ़िल्टर करें जो snapshotFlow में नहीं दिख रही हैं. (796b80)

वर्शन 1.6.0

24 जनवरी, 2024

androidx.compose.runtime:runtime-*:1.6.0 रिलीज़ हो गया है. वर्शन 1.6.0 में ये कमियां शामिल हैं.

1.5.0 के बाद के अहम बदलाव

नई सुविधाएं

  • रीकंपोज़िशन लूप (4dff9a) के दौरान न लिए गए अपवादों को फिर से फेंकें

परफ़ॉर्मेंस ऑप्टिमाइज़ेशन

  • स्नैपशॉट स्टेटस के रिकॉर्डिंग बदलावों को ऑप्टिमाइज़ करें (28c3fe)
  • rememberSaveable को ऑप्टिमाइज़ करें (f01d79)
  • बदलाव रिकॉर्ड होने तक, पाई गई स्थितियों को फिर से पढ़ना रोकें (f38099)
  • कंपोज़िशन की लोकल वैल्यू देने में सुधार करना (a337ea)

गड़बड़ियां ठीक की गईं

  • स्लॉट टेबल की मेमोरी लीक होने को ठीक करना (73fcfe)
  • हटाए जाने वाले सब-कंपोज़िशन को स्किप करें. (Ieeb99, b/254645321)
  • RememberObserver लाइफ़साइकल सिर्फ़ तब ट्रिगर करें, जब उन्हें याद रखने के लिए इस्तेमाल किए जाने वाले कैलकुलेशन में सेव किया गया हो. (f6b4dc)
  • $dirty कैप्चर को इनलाइन लैम्डा के लिए सीमित करें. (acfca0)
  • कभी-कभी गलत कंपोज़िशन लोकल मिलने से जगह बदलने वाले कॉन्टेंट को ठीक किया जा सकता है. (035cd6)

वर्शन 1.6.0-rc01

10 जनवरी, 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 रिलीज़ हो गया है. वर्शन 1.6.0-rc01 में ये कमिट हैं.

वर्शन 1.6.0-beta03

13 दिसंबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-beta03 रिलीज़ हो गया है. वर्शन 1.6.0-beta03 में ये कमिट हैं.

वर्शन 1.6.0-beta02

29 नवंबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-beta02 रिलीज़ हो गया है. वर्शन 1.6.0-beta02 में ये तय किए गए अपडेट शामिल हैं.

वर्शन 1.6.0-beta01

15 नवंबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-beta01 रिलीज़ हो गया है. वर्शन 1.6.0-beta01 में ये कमिट हैं.

एपीआई में बदलाव

  • एनोटेशन में स्थिरता की कुछ वैल्यू लागू करें. (274a4c)

गड़बड़ियां ठीक की गईं

  • कॉन्टेक्स्ट के हिसाब से कंपोज़िशन के लोकल स्कोप की स्थिति के लिए, रेफ़रेंसल नीति का इस्तेमाल करें. (83361सी)
  • $derty कैप्चर को इनलाइन Lambdas पर सीमित करें. (acfca0)
  • कभी-कभी गलत कंपोज़िशन लोकल मिलने से जगह बदलने वाले कॉन्टेंट को ठीक किया जा सकता है. (035cd6)
  • RecomposeScopeImpl में, बंटवारा न करने वाले तेज़ी से हैशमैप का इस्तेमाल करें. (डी79494)
  • DerivedState में ObjectIntMap का इस्तेमाल करें. (21862e)
  • DerivedState में SnapshotThreadLocal पूर्णांक के लिए IntRef का इस्तेमाल करें. (04eaf4)

वर्शन 1.6.0-alpha08

18 अक्टूबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha08 रिलीज़ हो गया है. वर्शन 1.6.0-alpha08 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • RememberObserver लाइफ़साइकल सिर्फ़ तब ट्रिगर करें, जब उन्हें याद रखने के लिए इस्तेमाल किए जाने वाले कैलकुलेशन में सेव किया गया हो. (f6b4dc)
  • अमान्य होने की सूची को क्रम से लगाने के लिए, ऐलोकेशन को बेहतर बनाएं. (954d63)
  • SnapshotStateObserver में ऐसे नए मैप का इस्तेमाल करें जिनका बंटवारा नहीं किया जा रहा. (4303ce)
  • कंपोज़िशन का इस्तेमाल बंद होने पर अमान्य होने का दावा किया जा सकता है. (e001be)

वर्शन 1.6.0-alpha07

4 अक्टूबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha07 रिलीज़ हो गया है. वर्शन 1.6.0-alpha07 में ये कमिट हैं.

एपीआई में बदलाव

  • सूची हेल्पर के सीधे तौर पर इंडेक्स करने वाले वर्शन का इस्तेमाल करने के लिए, SnapshotStateList को अब RandomAccess के तौर पर मार्क कर दिया गया है. (I5210c, b/219554654)

वर्शन 1.6.0-alpha06

20 सितंबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 रिलीज़ हो गया है. वर्शन 1.6.0-alpha06 में ये कमिट हैं.

वर्शन 1.6.0-alpha05

6 सितंबर, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha05 रिलीज़ हो गया है. वर्शन 1.6.0-alpha05 में ये कमियां हैं.

वर्शन 1.6.0-alpha04

23 अगस्त, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha04 रिलीज़ हो गया है. वर्शन 1.6.0-alpha04 में ये कमियां हैं.

नई सुविधाएं

  • रीकंपोज़िशन लूप (4dff9a) के दौरान न लिए गए अपवादों को फिर से फेंकें

एपीआई में बदलाव

  • ReusableComposition को बंद करने का तरीका जोड़ा गया. साथ ही, निगरानी करने की सुविधा को हटाया जा चुका है, लेकिन नोड एक ही जगह पर बने हुए हैं. बंद की गई कंपोज़िशन को फिर से setContent पर कॉल करके चालू किया जा सकता है. (Ib7f31)
  • सबकंपोज़िशन के लाइफ़साइकल और फिर से इस्तेमाल करने के तरीके को मैनेज करने के लिए, ReusableComposition इंटरफ़ेस जोड़ें. (I812d1, b/252846775)

वर्शन 1.6.0-alpha03

9 अगस्त, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha03 रिलीज़ हो गया है. वर्शन 1.6.0-alpha03 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • CompositionLocalProvider का नया ऑप्टिमाइज़ेशन (3118e88) ठीक करें
  • एक जगह से दूसरी जगह ले जाने वाले कॉन्टेंट नोड को खोलने का तरीका ठीक करें. (5e3d59b)

वर्शन 1.6.0-alpha02

26 जुलाई, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha02 रिलीज़ हो गया है. वर्शन 1.6.0-alpha02 में ये कमियां हैं.

नई सुविधाएँ और परफ़ॉर्मेंस बेहतर बनाना

  • rememberSaveable को ऑप्टिमाइज़ करें (f01d79)
  • बदलाव रिकॉर्ड होने तक, पाई गई स्थितियों को फिर से पढ़ना रोकें (f38099)
  • कंपोज़िशन की लोकल वैल्यू देने में सुधार करना (a337ea)
  • ग्रुप बनाने से बचने के लिए, SideEffect को @ExplicitGroupsComposable के तौर पर मार्क किया गया है. (I74815)
  • दोबारा इस्तेमाल किए जाने पर, कंपोज़िशन लोकल मैप की तुलना करने से बचें (782071)

एपीआई में बदलाव

  • CompositionLocalProviders के लिए, एक खास केस ओवरलोड जोड़ा गया. यह एक से ज़्यादा वैल्यू देने के लिए इस्तेमाल किए जाने वाले ओवरहेड से बचाता है. हालांकि, एक वैल्यू देने पर यह ओवरहेड होता है. (I6d640, b/288169379)

गड़बड़ियां ठीक की गईं

  • स्लॉट टेबल की मेमोरी लीक होने को ठीक करना (73fcfe)
  • stateSaver के शून्य (90748c) मिलने पर, rememberSaveable को वापस लाने का तरीका ठीक करें

वर्शन 1.6.0-alpha01

21 जून, 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 रिलीज़ हो गया है. वर्शन 1.6.0-alpha01 में ये कमियां हैं.

गड़बड़ियां ठीक की गईं

  • हटाए जाने वाले सब-कंपोज़िशन को स्किप करें. (Ieeb99, b/254645321)
  • स्नैपशॉट लागू करने के दौरान डेटा का बंटवारा कम किया गया. (I65c09)
  • अगर स्नैपशॉट में बदलाव नहीं किया गया था, तो DerivedState में readableHash का हिसाब लगाने से बचें (68c565)

संस्‍करण 1.5

वर्शन 1.5.4

18 अक्टूबर, 2023

androidx.compose.runtime:runtime-*:1.5.4 रिलीज़ हो गया है. वर्शन 1.5.4 में ये कमिट हैं.

वर्शन 1.5.3

4 अक्टूबर, 2023

androidx.compose.runtime:runtime-*:1.5.3 रिलीज़ हो गया है. वर्शन 1.5.3 में ये कमियां शामिल हैं.

संस्‍करण 1.5.2

27 सितंबर, 2023

androidx.compose.runtime:runtime-*:1.5.2 रिलीज़ हो गया है. वर्शन 1.5.2 में ये कमियां शामिल हैं.

संस्‍करण 1.5.1

6 सितंबर, 2023

androidx.compose.runtime:runtime-*:1.5.1 रिलीज़ हो गया है. वर्शन 1.5.1 में ये कमियां शामिल हैं.

वर्शन 1.5.0

9 अगस्त, 2023

androidx.compose.runtime:runtime-*:1.5.0 रिलीज़ हो गया है. वर्शन 1.5.0 में ये कमियां शामिल हैं.

एपीआई में बदलाव

  • डिज़ाइन, कलर ऐनिमेशन, और AndroidComposeView से ऐलोकेशन को हटाया गया. (Ib2bfa)
  • स्टेटस बनाने वाले फ़ंक्शन को मार्क करने के लिए, @StateFactoryMarker एनोटेशन जोड़ा गया. साथ ही, इसे remember कॉल में रैप किया जाना चाहिए. (I64550)
  • State और MutableState (fb3d89) के प्रिमिटिव वर्शन जोड़ें
  • Snapshot.isApplyObserverNotificationPending (I672a5) को जोड़ा गया
  • State एपीआई के प्रिमिटिव वर्शन जोड़े गए. इनसे State ऑब्जेक्ट में इंटर, लॉन्ग, फ़्लो, और डबल वैल्यू को ट्रैक करने की सुविधा मिली. साथ ही, इस पर ऑटोबॉक्स करने की कार्रवाई भी नहीं हुई. इनका इस्तेमाल करने के लिए, फ़ैक्ट्री के नए तरीकों mutableIntState(Int), mutableFloatStateOf(Float) वगैरह का इस्तेमाल करें. (I48e43)

गड़बड़ियां ठीक की गईं

  • हटाए जाने वाले सब-कंपोज़िशन को स्किप करें. (Ieeb99, b/254645321)
  • ComposerImpl (0206f7) में स्नैपशॉट रेफ़रंस को बनाए न रखें
  • कंपोज़िशन को दो बार लागू न करें (f5791b)
  • पक्का करें कि शुरू नहीं की गई डिराइव्ड स्टेट वैल्यू (aa2a92) के लिए अमान्य वैल्यू दी गई हो
  • कंपोज़िशन इस्तेमाल करने के दौरान onEndChanges पर कॉल करें. (62cc8c)
  • कॉन्टेंट को सब-कंपोज़िशन (4beb41) में ले जाने से जुड़ी समस्या ठीक की गई
  • संभावित डेडलॉक (c1a425 और 8edce0) को ठीक करना
  • Android विंडो के लिए बनाया गया रिकंपोज़र, अब सभी कंपोज़िशन के बजाय सिर्फ़ withFrameNanos पर की जाने वाली कॉल को ब्लॉक करेगा. ऐसा तब होगा, जब इसे ON_STOP सूचना के ज़रिए मिलेगा. इसका मतलब है कि जिन गतिविधियों को रोका गया है उनसे जुड़ी विंडो, डेटा में बदलाव करने के लिए फिर से काम करती रहेंगी. हालांकि, withFrameNanos का ऐनिमेशन या अन्य कॉलर, इन्हें ब्लॉक कर देंगे. (Id9e7f, b/240975572)
  • 3784073 इफ़ेक्ट को हटाने से पहले, LayoutNode के लिए डिऐक्टिवेशन कॉलबैक लागू करें
  • फिर से चालू किए गए lambdas ea81df9 के लिए बदले गए फ़्लैग ठीक करें
  • 73fd4d8 वाले नोड के साथ कंपोज़ेबल के लिए, लाइव एडिट रिग्रेशन की समस्या ठीक करें
  • ON_STOP को कंपोज़िशन ae276f1 के बजाय फ़्रेम क्लॉक के ब्रॉडकास्ट को रोकना चाहिए
  • बिना बदलाव वाली स्थितियों के लिए, SnapshotStateObserver स्कोप को अमान्य करें 84d9b1c
  • कंपोज़िशन 28761fc को नष्ट करते समय, संभावित डेड-लॉक को ठीक करना
  • कॉन्टेंट को सब-कंपोज़िशन 92d4156 में ले जाने से जुड़ी समस्या हल की गई
  • रीस्टार्ट किए गए lambdas (8a03e9) के लिए बदले गए फ़्लैग ठीक करें
  • इफ़ेक्ट हटाने से पहले, LayoutNode के लिए डिऐक्टिवेशन कॉलबैक लागू करें (8b0fa4)
  • नोड ग्रुप खत्म होने पर endToMarker() को ठीक करें. (d71d980)
  • सेवा बंद होने की स्थिति का पता लगाने के लिए, मौजूदा SlotWriter ग्रुप का इस्तेमाल करें (a0b518b)
  • SlotTable.moveSlotGapTo() वाले fill को हटाएं और उसे बंद करने के लिए ले जाएं (81f9935)
  • एक जगह से दूसरी जगह ले जाने वाले कॉन्टेंट को दूसरी जगह ले जाने के दौरान, अमान्य होने की समस्याएं ठीक करना (1d7c024)
  • एक जगह से दूसरी जगह ले जाए जा सकने वाले कॉन्टेंट के अमान्य होने की समस्या को ठीक करें (8676618)

परफ़ॉर्मेंस में सुधार

  • अगर स्नैपशॉट में बदलाव नहीं किया गया था, तो DerivedState में readableHash को कैलकुलेट करने से बचें. (307102)
  • बजट कम किया गया (I65c09, d7ea77, 727974, और 445808 )
  • CoroutineScopes कंपोज़िशन (a55362 और bd382f) को तुरंत रद्द करने की प्रक्रिया
  • ऐक्सेस न किए जा सकने वाले स्टेट रिकॉर्ड (c986960) वाले स्टेट ऑब्जेक्ट के रिकॉर्ड ओवरराइट करें
  • ग्रुप का पता लगाते समय, सही स्कोप वाले कंपोज़र का इस्तेमाल करें (9a5e5b6)
  • स्नैपशॉट के अमान्य होने की जानकारी सेव करने के लिए, IdentityArraySet का इस्तेमाल करें (7f60cca)
  • स्नैपशॉट मॉनिटर के लिए ऐलोकेशन को कम करें (5bc535f)

वर्शन 1.5.0-rc01

26 जुलाई, 2023

androidx.compose.runtime:runtime-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • बदलाव रिकॉर्ड होने तक, पाई गई स्थितियों को फिर से पढ़ना रोकें (f38099)

  • mutableStateOf() कॉल को प्रिमिटिव से जुड़े खास टाइप पर माइग्रेट करने का सुझाव देने के लिए, एक वैकल्पिक जांच उपलब्ध है. इसका लिंट आईडी AutoboxingStateCreation है. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू रहती थी. Android Studio के एडिटर और अपने प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को जानकारी से बदलकर चेतावनी (या इससे ज़्यादा) करें. इसके लिए, अपने मॉड्यूल के Build.gradle या build.gradle.kts कॉन्फ़िगरेशन में, warning "AutoboxingStateCreation" को इस तरह से सेट करें, जैसा कि यहां दिखाया गया है (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

वर्शन 1.5.0-beta03

28 जून, 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • हटाए जाने वाले सब-कंपोज़िशन को स्किप करें. (Ieeb99, b/254645321)

वर्शन 1.5.0-beta02

7 जून, 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये कमिट हैं.

परफ़ॉर्मेंस में सुधार

  • अगर स्नैपशॉट में बदलाव नहीं किया गया था, तो DerivedState में readableHash को कैलकुलेट करने से बचें. (307102)

वर्शन 1.5.0-beta01

24 मई, 2023

androidx.compose.runtime:runtime-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये कमिट हैं.

एपीआई में बदलाव

  • फिर से कंपोज़िशन, कलर ऐनिमेशन, और AndroidComposeView (Ib2bfa) के लिए ऐलोकेशन को हटाया गया
  • स्टेटस बनाने वाले फ़ंक्शन को मार्क करने के लिए, @StateFactoryMarker एनोटेशन जोड़ा गया. साथ ही, इसे remember कॉल में रैप किया जाना चाहिए. (I64550)
  • State और MutableState (fb3d89) के प्रिमिटिव वर्शन जोड़ें
  • Snapshot.isApplyObserverNotificationPending (I672a5) को जोड़ा गया

गड़बड़ियां ठीक की गईं

  • बजट कम किया गया (I65c09, d7ea77, 727974, और 445808 )
  • ComposerImpl (0206f7) में स्नैपशॉट रेफ़रंस को बनाए न रखें
  • CoroutineScopes कंपोज़िशन (a55362 और bd382f) को तुरंत रद्द करने की प्रक्रिया
  • कंपोज़िशन को दो बार लागू न करें (f5791b)
  • पक्का करें कि शुरू नहीं की गई डिराइव्ड स्टेट वैल्यू (aa2a92) के लिए अमान्य वैल्यू दी गई हो
  • कंपोज़िशन इस्तेमाल करने के दौरान onEndChanges पर कॉल करें. (62cc8c)
  • कॉन्टेंट को सब-कंपोज़िशन (4beb41) में ले जाने से जुड़ी समस्या ठीक की गई
  • संभावित डेडलॉक को ठीक करें (c1a425
  • ON_STOP को कंपोज़िशन (f4a2d1) के बजाय फ़्रेम क्लॉक के ब्रॉडकास्ट को रोकना चाहिए
  • रीस्टार्ट किए गए lambdas (8a03e9) के लिए बदले गए फ़्लैग ठीक करें
  • इफ़ेक्ट हटाने से पहले, LayoutNode के लिए डिऐक्टिवेशन कॉलबैक लागू करें (8b0fa4)

बाहरी योगदान

  • Snapshot.isApplyObserverNotificationPending (I672a5) को जोड़ा गया

वर्शन 1.5.0-alpha04

10 मई, 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 रिलीज़ हो गया है. वर्शन 1.5.0-alpha04 में ये कमियां हैं.

एपीआई में बदलाव

  • State एपीआई के प्रिमिटिव वर्शन जोड़े गए. इनसे State ऑब्जेक्ट में इंटर, लॉन्ग, फ़्लो, और डबल वैल्यू को ट्रैक करने की सुविधा मिली. साथ ही, इस पर ऑटोबॉक्स करने की कार्रवाई भी नहीं हुई. इनका इस्तेमाल करने के लिए, फ़ैक्ट्री के नए तरीकों mutableIntState(Int), mutableFloatStateOf(Float) वगैरह का इस्तेमाल करें. (I48e43)

गड़बड़ियां ठीक की गईं

  • कंपोज़िशन इस्तेमाल करने के दौरान onEndChanges पर कॉल करें. Composition.dispose के दौरान हटाए गए फ़ोकस नोड, फ़ोकस रीसेट करने के लिए onEndChanges की सदस्यता ले रहे हैं.(03d4a47)

  • शुरू न किए गए डिराइव्ड स्टेट की वैल्यू के लिए, अमान्य वैल्यू को पक्का करें. डिराइव्ड स्टेट, SnapshotStateObserver में अपनी डिपेंडेंसी की सूची से जुड़ी होती है. डिपेंडेंसी बदलने पर इसका इस्तेमाल, डिराइव्ड स्टेट से जुड़े स्कोप को अमान्य करने के लिए किया जाता है. डिपेंडेंसी में किया गया बदलाव, स्नैपशॉट एडवांस पर रजिस्टर किया जाता है, जो कि डिराइव्ड स्टेट रीड (Snapshot.notifyObjectsInitialized() को कॉल करने की वजह से) के बाद हो सकता है.

    SnapshotStateObserver में डिराइव्ड स्टेट ऑब्ज़र्वेशन लॉजिक, पुरानी डिपेंडेंसी को हटा रहा था और नई वैल्यू को पढ़ रहा था. इसकी वजह से, एक ऐसी रेस कंडिशन हुई जिसमें अमान्य होने की वजह से, सिस्टम को ठीक किया गया. ऐसी स्थिति में, डिपेंडेंसी अमान्य होने के बारे में कोई रजिस्ट्रेशन नहीं किया गया था.

    इस बदलाव से, 'पाने वाला' फ़ील्ड रीड और डिपेंडेंसी के क्लीनअप का क्रम बदल जाता है. इससे यह पक्का होता है कि अमान्य होने पर, हमेशा सही स्थिति का ही इस्तेमाल होगा. (c472be6)

वर्शन 1.5.0-alpha03

19 अप्रैल, 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha03 रिलीज़ हो गया है. वर्शन 1.5.0-alpha03 में ये कमियां हैं.

एपीआई में बदलाव

  • Android विंडो के लिए बनाया गया रिकंपोज़र, अब सभी कंपोज़िशन के बजाय सिर्फ़ withFrameNanos पर की जाने वाली कॉल को ब्लॉक करेगा. ऐसा तब होगा, जब इसे ON_STOP सूचना के ज़रिए मिलेगा. इसका मतलब है कि जिन गतिविधियों को रोका गया है उनसे जुड़ी विंडो, डेटा में बदलाव करने के लिए फिर से काम करती रहेंगी. हालांकि, withFrameNanos का ऐनिमेशन या अन्य कॉलर, इन्हें ब्लॉक कर देंगे. (Id9e7f, b/240975572)

गड़बड़ियां ठीक की गईं

  • स्नैपशॉट सूची में संभावित डेडलॉक को ठीक करें और 5c1a425 को मैप करें
  • 3784073 इफ़ेक्ट को हटाने से पहले, LayoutNode के लिए डिऐक्टिवेशन कॉलबैक लागू करें
  • फिर से चालू किए गए lambdas ea81df9 के लिए बदले गए फ़्लैग ठीक करें
  • 73fd4d8 वाले नोड के साथ कंपोज़ेबल के लिए, लाइव एडिट रिग्रेशन की समस्या ठीक करें
  • ON_STOP को कंपोज़िशन ae276f1 के बजाय फ़्रेम क्लॉक के ब्रॉडकास्ट को रोकना चाहिए
  • बिना बदलाव वाली स्थितियों के लिए, SnapshotStateObserver स्कोप को अमान्य करें 84d9b1c
  • कंपोज़िशन 28761fc को नष्ट करते समय, संभावित डेड-लॉक को ठीक करना
  • कॉन्टेंट को सब-कंपोज़िशन 92d4156 में ले जाने से जुड़ी समस्या हल की गई

वर्शन 1.5.0-alpha02

5 अप्रैल, 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 रिलीज़ हो गया है. वर्शन 1.5.0-alpha02 में ये कमियां हैं.

नई सुविधाएं

  • Kotlin के getValue ऑपरेटर को अब कंपोज़ेबल (f174f6e) बनाया जा सकता है

गड़बड़ियां ठीक की गई हैं, परफ़ॉर्मेंस को बेहतर बनाया गया है

  • ऐक्सेस न किए जा सकने वाले स्टेट रिकॉर्ड (c986960) वाले स्टेट ऑब्जेक्ट के रिकॉर्ड ओवरराइट करें
  • ग्रुप का पता लगाते समय, सही स्कोप वाले कंपोज़र का इस्तेमाल करें (9a5e5b6)
  • नोड ग्रुप खत्म होने पर endToMarker() को ठीक करें. (d71d980)
  • सेवा बंद होने की स्थिति का पता लगाने के लिए, मौजूदा SlotWriter ग्रुप का इस्तेमाल करें (a0b518b)
  • स्नैपशॉट के अमान्य होने की जानकारी सेव करने के लिए, IdentityArraySet का इस्तेमाल करें (7f60cca)
  • SlotTable.moveSlotGapTo() वाले fill को हटाएं और उसे बंद करने के लिए ले जाएं (81f9935)
  • एक जगह से दूसरी जगह ले जाने वाले कॉन्टेंट को दूसरी जगह ले जाने के दौरान, अमान्य होने की समस्याएं ठीक करना (1d7c024)
  • एक जगह से दूसरी जगह ले जाए जा सकने वाले कॉन्टेंट के अमान्य होने की समस्या को ठीक करें (8676618)
  • स्नैपशॉट मॉनिटर के लिए ऐलोकेशन को कम करें (5bc535f)

वर्शन 1.5.0-alpha01

22 मार्च, 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha01 रिलीज़ हो गया है. वर्शन 1.5.0-alpha01 में ये कमियां हैं.

नई सुविधाएं

  • Modifier.Node#coroutineScope को जोड़ता है, ताकि Modifier.Nodes कोरूटीन लॉन्च करने की अनुमति मिल सके (I76ef9)
  • CompositionLocalConsumerModifierNode इंटरफ़ेस लागू करके, Modifier.Nodes को CompositionLocals पढ़ने की अनुमति दें. (Ib44df)

वर्शन 1.4

वर्शन 1.4.3

3 मई, 2023

androidx.compose.runtime:runtime-*:1.4.3 को बिना किसी बदलाव के रिलीज़ किया गया.

वर्शन 1.4.2

19 अप्रैल, 2023

androidx.compose.runtime:runtime-*:1.4.2 रिलीज़ हो गया है. वर्शन 1.4.2 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • स्नैपशॉट सूची में संभावित डेडलॉक को ठीक करें और 2eb6570 को मैप करें

  • अगर SnapshotStateList या SnapshotStateMap में कॉन्टेंट जोड़ा जाता है, तो राज्य के रिकॉर्ड में सीधे तौर पर बदलाव करने के साथ-साथ कॉन्टेंट जोड़ने पर एक डेडलॉक दिख सकता है. 93fcae828b की ओर से किए गए बदलावों की वजह से इस समस्या का सामना होने की संभावना काफ़ी बढ़ गई. यह सुविधा, इस्तेमाल न किए गए रिकॉर्ड को रिलीज़ करने के लिए, सीधे तौर पर लिखने का इस्तेमाल करती है.

  • लॉक को अब इस क्रम में लगाया जाता है कि मैप या लिस्ट लॉक को होल्ड पर रखने पर, स्नैपशॉट लॉक को लेने की कोशिश कभी नहीं की जाती.

वर्शन 1.4.1

5 अप्रैल, 2023

androidx.compose.runtime:runtime-*:1.4.1 रिलीज़ हो गया है. वर्शन 1.4.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नोड ग्रुप खत्म होने पर endToMarker() को ठीक करें. d71d980

वर्शन 1.4.0

22 मार्च, 2023

androidx.compose.runtime:runtime-*:1.4.0 रिलीज़ हो गया है. वर्शन 1.4.0 में ये कमियां शामिल हैं.

1.3.0 के बाद से हुए अहम बदलाव

  • पहली कंपोज़िशन 3680e25 के लिए, LiveData से शुरू की गई वैल्यू इस्तेमाल करें
  • कंपोज़ नोड के लाइफ़साइकल की जानकारी के लिए ComposeNodeLifecycleCallback जोड़ें. 8b6a258
  • ComposableMethod 7b6c7ad में parameterTypes प्रॉपर्टी जोड़ें

गड़बड़ी ठीक करना और परफ़ॉर्मेंस में सुधार

  • SnapshotStateObserver 29f4a3e में दोनों स्कोप इंडेक्स हटाएं
  • स्किप न किए जा सकने वाले Lambdas के मुख्य हिस्से में ज़रूरी ग्रुप जोड़ें 7d06752
  • स्नैपशॉट स्थिति 93fcae8 की मेमोरी रेफ़रंस विशेषताओं को बेहतर बनाएं
  • कंपोज़िशन लोकल लुकअप 0875717 में बॉक्सिंग हटाएं
  • फिर से इस्तेमाल नहीं किए जा सकने वाले नोड ग्रुप 6388d8d के लिए सही कुंजी का इस्तेमाल करें
  • SnapshotStateObserver को बार-बार होने वाले और एक साथ होने वाले बदलाव से सुरक्षित रखें. यह 98cb6ba लागू होता है
  • IdentityArraySet "get" में चेक-इंडेक्स-बाउंड चेक जोड़ा गया तरीका 35a77d3
  • ViewTreeLifecycleOwner एक्सटेंशन 21c2122 का इस्तेमाल करने के लिए, ‘लिखें’ मॉड्यूल अपडेट करें
  • रीकंपोज़र के फ़्रेम में आने के बाद, लागू होने वाली सूचनाएं भेजें. 98f2641
  • Recomposer 8f8656f को रद्द करते समय, इंडेक्स के आउटबाउंड क्रैश से जुड़ी समस्या को ठीक किया गया
  • अगर कंपोज़िशन की पैरंट कंपनी ने 9526fcc की वैल्यू में बदलाव किया है, तो हर बार ज़बरदस्ती फिर से कंपोज़िशन इस्तेमाल करें
  • रद्द किए गए जॉब a55f7ed के लिए रीकंपोज़र सहनशीलता
  • 9b7ed67 कंपोज़र की बड़ी संख्या के लिए, अमान्य होने की समस्याओं को हल करना
  • गैर-स्थानीय रिटर्न b6f590c के लिए क्लोज़िंग ग्रुप जनरेट करने की समस्या ठीक करना

वर्शन 1.4.0-rc01

8 मार्च, 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 रिलीज़ हो गया है. वर्शन 1.4.0-rc01 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

वर्शन 1.4.0-beta02

22 फ़रवरी, 2023

androidx.compose.runtime:runtime:1.4.0-beta02 और androidx.compose.runtime:runtime-saveable:1.4.0-beta02 रिलीज़ हुई हैं. वर्शन 1.4.0-beta02 में ये कमिट हैं.

वर्शन 1.4.0-beta01

8 फ़रवरी, 2023

androidx.compose.runtime:runtime-*:1.4.0-beta01 रिलीज़ हो गया है. वर्शन 1.4.0-beta01 में ये कमिट हैं.

एपीआई में बदलाव

  • ComposeNodeLifecycleCallback को जोड़ा गया, जो कंपोज़ नोड (I3731b) के लाइफ़साइकल की जानकारी देता है
  • @TestOnly को Composer.disableSourceInformation() में जोड़ा गया, क्योंकि इस फ़ंक्शन को सिर्फ़ टेस्ट में कॉल किया जा सकता है. (I896c8)

गड़बड़ियां ठीक की गईं

  • कंपोज़िशन लोकल लुकअप (62f66a) में बॉक्सिंग हटाएं
  • स्नैपशॉट स्टेटस (dfb451) की मेमोरी रेफ़रंस विशेषताओं को बेहतर बनाएं

वर्शन 1.4.0-alpha05

25 जनवरी, 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 और androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 रिलीज़ हुई हैं. वर्शन 1.4.0-alpha05 में ये कमियां हैं.

एपीआई में बदलाव

  • इन-लाइन/छिपाए गए फ़ंक्शन के ज़्यादा टाइप/शून्य वैल्यू (I24f91)

वर्शन 1.4.0-alpha04

11 जनवरी, 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 रिलीज़ हो गया है. वर्शन 1.4.0-alpha04 में ये कमियां हैं.

एपीआई में बदलाव

  • TestMonotonicFrameClock अब सही एक्सपेरिमेंटल एनोटेशन का इस्तेमाल करता है. (I95c9e)

गड़बड़ियां ठीक की गईं

  • SnapshotStateObserver को बार-बार होने वाले और एक साथ होने वाले बदलाव से सुरक्षित रखें (d902fb)

वर्शन 1.4.0-alpha03

7 दिसंबर, 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये कमियां हैं.

एपीआई में बदलाव

  • ComposableMethod क्लास में कोई नया सार्वजनिक तरीका जोड़ा जा रहा है, जो java.lang.reflect.Method#getParameterTypes() (Iab0c3) के जैसा है

गड़बड़ियां ठीक की गईं

  • Recomposer के बदलाव लागू होने के बाद, स्नैपशॉट लागू होने की सूचनाएं अब भेजी जाती हैं. (Iad6c0, b/222093277)

वर्शन 1.4.0-alpha02

9 नवंबर, 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha02 रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये कमियां हैं.

वर्शन 1.4.0-alpha01

24 अक्टूबर, 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha01 रिलीज़ हो गया है. वर्शन 1.4.0-alpha01 में ये कमियां हैं.

एपीआई में बदलाव

  • SnapshotStateList और SnapshotStateMap में अब toList() और toMap() को साफ़ तौर पर लागू किया गया है. इन तरीकों से कॉन्टेंट की कॉपी बनाए बिना ही, अपना मौजूदा कॉन्टेंट वापस मिल जाता है. ऐसा इसलिए, क्योंकि इससे ऐसा इंटरनल डेटा मिलता है जिसमें बदलाव नहीं किया जा सकता. इस डेटा का इस्तेमाल कॉन्टेंट को सेव करने के लिए किया जाता है. उदाहरण के लिए, इस वैल्यू का इस्तेमाल snapshotFlow का इस्तेमाल करके, डेटा को कॉपी किए बिना वैल्यू का फ़्लो बनाने के लिए किया जा सकता है. (Ica2bd)

वर्शन 1.3

वर्शन 1.3.3

11 जनवरी, 2023

androidx.compose.runtime:runtime-*:1.3.3 रिलीज़ हो गया है. वर्शन 1.3.3 में ये कमिट हैं.

  • 1.3.2 के बाद से कोई बदलाव नहीं

वर्शन 1.3.2

7 दिसंबर, 2022

androidx.compose.runtime:runtime-*:1.3.2 रिलीज़ हो गया है. वर्शन 1.3.2 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • androidx.compos.ui 1.3.2 के साथ काम करने के लिए अपडेट किया गया

वर्शन 1.3.1

9 नवंबर, 2022

androidx.compose.runtime:runtime-*:1.3.1 रिलीज़ हो गया है. वर्शन 1.3.1 में ये कमियां शामिल हैं.

वर्शन 1.3.0

24 अक्टूबर, 2022

androidx.compose.runtime:runtime-*:1.3.0 रिलीज़ हो गया है. वर्शन 1.3.0 में ये कमियां शामिल हैं.

01.2.0 के बाद के अहम बदलाव

अपवाद को मैनेज करना / लाइव एडिट करने के लिए सहायता

कंपोज़िशन ट्रेसिंग

कंपोज़ेबल रिफ़्लेक्शन एपीआई

रनटाइम में सुधार

स्नैपशॉट सिस्टम

वर्शन 1.3.0-rc01

5 अक्टूबर, 2022

androidx.compose.runtime:runtime-*:1.3.0-rc01 रिलीज़ हो गया है. वर्शन 1.3.0-rc01 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • स्लॉट टेबल से आने वाली तय ArrayIndexOutOfBoundsException (b/249076084)

वर्शन 1.3.0-beta03

21 सितंबर, 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 रिलीज़ हो गया है. वर्शन 1.3.0-beta03 में ये कमिट हैं.

व्यवहार में बड़ा बदलाव

  • remember और rememberCoroutineScope में पैरामीटर, जहां बदलकर crossinline हो गया. इससे, तय समय से पहले सामान लौटाने की सुविधा के बजाय, समय से पहले सामान लौटाने की गड़बड़ी के बारे में जानकारी मिलेगी. इसकी वजह से, बाद में अंदरूनी गड़बड़ी की रिपोर्ट मिलेगी.
  • इस बदलाव की वजह से, कंपाइलर की नई गड़बड़ियां रिपोर्ट हो सकती हैं. इन गड़बड़ियों के लिए, बिना लोकल रिटर्न को लैम्डा से हटाने के लिए कहा जा सकता है. (Ibea62)

वर्शन 1.3.0-beta02

7 सितंबर, 2022

androidx.compose.runtime:runtime-*:1.3.0-beta02 रिलीज़ हो गया है. वर्शन 1.3.0-beta02 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • अपडेट किया गया एपीआई (I64ca0)

वर्शन 1.3.0-beta01

24 अगस्त, 2022

androidx.compose.runtime:runtime-*:1.3.0-beta01 रिलीज़ हो गया है. वर्शन 1.3.0-beta01 में ये कमिट हैं.

एपीआई में बदलाव

  • CompositionData में एक find तरीका जोड़ा गया, ताकि इस एपीआई का इस्तेमाल करने वाले डेवलपर टूल को, कंपोज़िशन की पहचान का इस्तेमाल करके किसी सब-ग्रुप को तुरंत खोजने की अनुमति मिल सके. (I5794f)

वर्शन 1.3.0-alpha03

10 अगस्त, 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha03 रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये कमियां हैं.

वर्शन 1.3.0-alpha02

27 जुलाई, 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha02 रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमियां हैं.

एपीआई में बदलाव

  • पुराने सिस्टम के साथ काम करने की सुविधा (I6e6de) के लिए, ComposerKt.traceEventStart(Int, String) को फिर से जोड़ा गया

वर्शन 1.3.0-alpha01

29 जून, 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये कमियां हैं.

एपीआई में बदलाव

  • उपयोगिता फ़ंक्शन को रनटाइम में ले जाना (I4f729)

वर्शन 1.2

वर्शन 1.2.1

10 अगस्त, 2022

androidx.compose.runtime:runtime-*:1.2.1 रिलीज़ हो गया है. वर्शन 1.2.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़िक्स्ड मेमोरी लीक: पारदर्शी स्नैपशॉट से बनाए गए नेस्ट किए गए स्नैपशॉट को नष्ट करें b/239603305

वर्शन 1.2.0

27 जुलाई, 2022

androidx.compose.runtime:runtime-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये कमियां शामिल हैं.

1.1.0 के बाद हुए अहम बदलाव

  • Compose के डेटा को 1.2.0 वर्शन में कई सुविधाओं के साथ पेश किया गया था. साथ ही, इस वर्शन में कई गड़बड़ियां भी ठीक की गई थीं. movableContentOfएपीआई का शुरुआती वर्शन, सबसे अहम नई सुविधा थी. इसका इस्तेमाल जटिल UX को चालू करने के लिए किया जा सकता है. जैसे, शेयर किए गए एलिमेंट ट्रांज़िशन. movableContentOf एपीआई, कंपोज़ेबल लैम्डा को लैम्डा में बदल देता है, जो उसकी स्थिति और उससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन को छोड़ता है, तब स्थिति को अस्थायी रूप से बनाए रखा जाता है और अगर लैम्डा को कोई नया कॉल कंपोज़िशन में जाता है, तो स्थिति और उससे जुड़े नोड को नए कॉल की जगह पर ले जाया जाता है. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो कॉल हमेशा के लिए हटा दिया जाता है. साथ ही, याद रखें कि ऑब्ज़र्वर को इसकी सूचना दी जाती है.

  • अगर movableContentOf लैम्डा को एक ही कंपोज़िशन में कई बार कॉल किया जाता है, तो हर कॉल के लिए नई स्थिति और नोड बन जाते हैं. जब कॉल कंपोज़िशन से बाहर जाते हैं और नए कॉल शुरू होते हैं, तो स्थिति को पहले किए गए कॉल से डाले गए कॉल में ले जाया जाता है. नए कॉल से जिन स्थितियों पर दावा नहीं किया जाता उन्हें हमेशा के लिए हटा दिया जाता है.

  • इसके अलावा, कुछ दूसरी नई सुविधाओं के अलावा रनटाइम और स्नैपशॉट की स्थिति को स्थिर करने में काफ़ी समय लगाया गया. कई मेमोरी लीक को हटाया गया और कोड पाथ ऑप्टिमाइज़ किए गए.

  • बदलावों की खास जानकारी की सूची नीचे दी गई है:

1.2 में नई सुविधाएं

1.2 में परफ़ॉर्मेंस

1.2 में गड़बड़ियां ठीक की गईं

वर्शन 1.2.0-rc03

29 जून, 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 रिलीज़ हो गया है. वर्शन 1.2.0-rc03 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • व्युत्पन्न स्थिति के ऑब्ज़र्वेशन को पहले रीकंपोज़ स्कोप और कंपोज़िशन से एक साथ बिना किसी शर्त के हटा दिया गया था. इसकी वजह से दूसरे दायरों को तोड़ दिया गया, जो अब भी रिकंपोज़ स्कोप और कंपोज़िशन से जुड़ी हुई हैं. यह बदलाव सिर्फ़ व्युत्पन्न स्थिति के इंस्टेंस को हटाता है, अगर यह अब अन्य स्कोप से नहीं दिखता. (b/236618362)

वर्शन 1.2.0-rc02

22 जून, 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 रिलीज़ हो गया है. वर्शन 1.2.0-rc02 में ये कमिट हैं.

वर्शन 1.2.0-rc01

15 जून, 2022

androidx.compose.runtime:runtime-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये कमिट शामिल हैं.

एपीआई में बदलाव

  • लिखने की सुविधा वाली लाइब्रेरी में इंटरफ़ेस अब jdk8 डिफ़ॉल्ट इंटरफ़ेस तरीकों (I5bcf1) का इस्तेमाल करके बनाए जाते हैं

वर्शन 1.2.0-beta03

1 जून, 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 रिलीज़ हो गया है. वर्शन 1.2.0-beta03 में ये कमिट हैं.

वर्शन 1.2.0-beta02

18 मई, 2022

androidx.compose.runtime:runtime-*:1.2.0-beta02 रिलीज़ हो गया है. वर्शन 1.2.0-beta02 में ये तय किए गए हिस्से शामिल हैं.

वर्शन 1.2.0-beta01

11 मई, 2022

androidx.compose.runtime:runtime-*:1.2.0-beta01 रिलीज़ हो गया है. वर्शन 1.2.0-beta01 में ये तय किए गए हिस्से शामिल हैं.

नई सुविधाएं

  • यह 1.2 की पहली बीटा रिलीज़ है!

एपीआई में बदलाव

  • प्रयोगात्मक Snapshot.unsafeEnter/unsafeLeave (I108f3) जोड़ा गया
  • प्रयोग के तौर पर Snapshot.asContextElement() एपीआई जोड़ा गया (Iff072)
  • @ComposableTargetMarker ने जो @ComposableTarget एनोटेशन और एनोटेशन मार्क किए हैं उन्हें अब फ़ाइल के दायरे में @file प्रीफ़िक्स का इस्तेमाल करके इस्तेमाल किया जा सकता है. फ़ाइल के स्कोप में टारगेट एनोटेशन का इस्तेमाल करने पर, कंपाइलर यह मान लेगा कि फ़ाइल के सभी कंपोज़ेबल फ़ंक्शन, संबंधित ऐप्लायर को टारगेट करने के लिए हैं. उदाहरण के लिए, @file:UiComposable का इस्तेमाल करने से एलान होता है कि सभी @Composable फ़ंक्शन, Compose यूज़र इंटरफ़ेस (यूआई) लागू करने वाले को टारगेट करते हैं. जिस फ़ंक्शन को किसी दूसरे ऐप्लायर को टारगेट करना है उसके लिए, टारगेट मार्कर एनोटेशन साफ़ तौर पर देना होगा. (I40804)

वर्शन 1.2.0-alpha08

20 अप्रैल, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये कमियां हैं.

एपीआई में बदलाव

  • TracingInProgress को CompositionTracer इंटरफ़ेस में जोड़ा गया. (Ic6f12)
  • recomposeScopeIdentity को Composer में जोड़ें (I0c873)
  • OptIn(InternalComposeTracingApi) पर प्रतिबंधित ट्रेसिंग एपीआई (Composer.setTracer) के लिए. (I9187f)
  • ResuableContentHost को जोड़ा गया. इसकी मदद से, फिर से इस्तेमाल किए जा सकने वाले कॉन्टेंट के लिए बनाए गए स्टेटस को कभी भी बेहतर तरीके से कंट्रोल किया जा सकता है. उदाहरण के लिए, अगर किसी सब-कंपोज़िशन का कुछ समय के लिए इस्तेमाल नहीं किया जा रहा है, तो कॉन्टेंट को बंद किया जा सकता है. इससे कंपोज़िशन में सेव की गई सभी स्थिति को ट्रिगर नहीं किया जाता, जैसे कि सभी डिस्पोज़ेबल इफ़ेक्ट. (I2c0f2, b/220322704)

वर्शन 1.2.0-alpha07

6 अप्रैल, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 रिलीज़ हो गया है. वर्शन 1.2.0-alpha07 में ये कमिट हैं.

एपीआई में बदलाव

  • नया फ़ंक्शन Snapshot.withoutReadObservation { ... } जोड़ा गया. इससे उपयोगकर्ता, इस ब्लॉक के दौरान पढ़े गए स्टेट वैल्यू में हुए बदलावों की सदस्यता लिए बिना, पास किए गए Lambda फ़ंक्शन को चला सकते हैं. यह विकल्प, इस्तेमाल के उन मामलों में फ़ायदेमंद साबित हो सकता है जब आपको स्नैपशॉट पर आधारित थ्रेड के सुरक्षित कॉन्टेंट/रीड से फ़ायदा पाना हो, लेकिन आपको बिना ज़रूरत के उसे बदले या फिर से मेज़र किए बिना वैल्यू को पढ़ना हो. (I9f365, b/214054486)

वर्शन 1.2.0-alpha06

23 मार्च, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये कमियां हैं.

वर्शन 1.2.0-alpha05

9 मार्च, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha05 रिलीज़ हो गया है. वर्शन 1.2.0-alpha05 में ये कमियां हैं.

बाहरी योगदान

  • Kotlinx कोरूटीन 1.6.0 (I3366d) का इस्तेमाल करने के लिए अपडेट किया गया

वर्शन 1.2.0-alpha04

23 फ़रवरी, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये कमियां हैं.

एपीआई में बदलाव

  • ComposableTarget, ComposableTargetMarker, और लोगों को जोड़ा गया ComposableOpenTarget जो कब के समय की रिपोर्टिंग को इकट्ठा करने की अनुमति देता है कंपोज़ेबल फ़ंक्शन को किसी ऐसे एप्लीयर को टारगेट करना कहते हैं जो पहले नहीं था जिन्हें इस्तेमाल करने के लिए डिज़ाइन किया गया है.

    ज़्यादातर मामलों में एनोटेशन का अनुमान लगाने के लिए, कंपाइलर प्लगिन इसलिए यह ज़रूरी है कि इन एनोटेशन का सीधे इस्तेमाल करने पर दुर्लभ . जिन मामलों का अनुमान नहीं लगाया जा सकता उनमें बनाना और एक कस्टम उपकरणर, ऐब्स्ट्रैक्ट कंपोज़ेबल फ़ंक्शन का इस्तेमाल करके, जैसे कि इंटरफ़ेस मेथड), फ़ील्ड या ग्लोबल वैरिएबल कंपोज़ेबल लैम्डा (लोकल वैरिएबल और पैरामीटर का अनुमान लगाया जाता है), या ComposeNode या इससे जुड़े कंपोज़ेबल फ़ंक्शन का इस्तेमाल करते समय.

    कस्टम ऐप्लायर के लिए, कंपोज़ेबल फ़ंक्शन ComposeNode या ReusableComposeNode को जोड़ने की ज़रूरत है फ़ंक्शन और किसी भी फ़ंक्शन के लिए, CompoableTarget एनोटेशन कंपोज़ेबल लैम्डा पैरामीटर प्रकार. हालांकि, हमारा सुझाव है कि के साथ एक ऐसी व्याख्या बनाएं ComposableTargetMarker और फिर मार्क की गई जानकारी का इस्तेमाल करें ComposableTarget लिखने के बजाय बनाया गया है. कंपोज़ेबल एनोटेशन ComposableTargetMarker से मार्क की गई वैल्यू, इसके बराबर है एट्रिब्यूट के पूरी तरह क्वालिफ़ाइड नाम के साथ ComposbleTarget क्लास का इस्तेमाल applier पैरामीटर के तौर पर करें. उदाहरण के लिए, ComposableTargetMarker anroidx.compose.ui.UiComposable देखें. (I38f11)

वर्शन 1.2.0-alpha03

9 फ़रवरी, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha03 रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये कमियां हैं.

एपीआई में बदलाव

  • movableContentOf को जोड़ा गया, जो कंपोज़ेबल को कन्वर्ट कर देता है लैम्डा को एक लैम्डा में ले जाता है, जो उसे स्थिति और संबंधित नोड पर स्थानांतरित करता है, तो उसे किसी भी नए स्थान पर ले जाया जाएगा. पिछले कॉल के जाने पर स्थिति कुछ समय के लिए सेव रखी जाती है. साथ ही, अगर नया कॉल किया जाता है, पहले कंपोज़िशन के बाद राज्य और उससे जुड़े नोड, नए कॉल की जगह पर ले जाए जाते हैं. अगर कोई नया कॉल जोड़ा गया राज्य हमेशा के लिए हटा दिया जाता है और याद रखें कि ऑब्ज़र्वर सूचना दी गई.

    अगर movableContentOf लैम्डा को एक ही बार में कई बार कॉल किया जाता है कंपोज़िशन, नई स्थिति, और नोड हर कॉल के लिए बनाए जाते हैं. कॉल कंपोज़िशन से बाहर हो जाते हैं और नए कॉल आते हैं, तो स्थिति बदल गई है पहली बार छोड़ने वाले कॉल से लेकर दर्ज किए गए कॉल तक तो उन्हें कॉल किया जाता है. नए कॉल से जिन स्थितियों पर दावा नहीं किया गया है उन्हें हटा दिया गया है स्थायी रूप से. (Ib4850)

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

    इन कॉल और इनसे जुड़े सोर्स को हटाने के लिए रिलीज़ के बिल्ड की जानकारी देखते समय, नीचे दिया गया ProGuard नियम जोड़ें:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • InternalComposeScope जोड़ें, ताकि टूल को ऐक्सेस किया जा सके का इस्तेमाल करके कंपोज़ेबल को पहचाना जा सकता है. (I07a3f)

वर्शन 1.2.0-alpha02

26 जनवरी, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये कमियां हैं.

वर्शन 1.2.0-alpha01

12 जनवरी, 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये कमियां हैं.

एपीआई में बदलाव

  • जनरेट करने के लिए, CompositionData में identity फ़ील्ड को जोड़ा गया में इनवैरिएंट आईडी का इस्तेमाल करें. (Ic116e)

डिपेंडेंसी से जुड़े अपडेट

  • अब Kotlin 1.6.10 पर निर्भर करता है.

वर्शन 1.1

वर्शन 1.1.1

23 फ़रवरी, 2022

androidx.compose.runtime:runtime-*:1.1.1 रिलीज़ हो गया है. वर्शन 1.1.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462) पर जाकर, NullPointerException से जुड़ी गड़बड़ियों को ठीक करें
  • से पढ़ते समय क्लिपबोर्ड सामग्री के कारण होने वाला क्रैश ठीक किया गया Android पर क्लिपबोर्ड इस्तेमाल करें. (I06020, b/197769306)
  • LazyVerticalGrid में तय RTL (aosp/1931080, b/207510535)

वर्शन 1.1.0

9 फ़रवरी, 2022

androidx.compose.runtime:runtime-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये कमियां शामिल हैं.

1.0.0 के बाद के अहम बदलाव

  • Android 12 ओवरस्क्रोल इफ़ेक्ट के लिए बेहतर सहायता
  • टच टारगेट (स्क्रीन के वे हिस्से जहां छूने पर कोई कार्रवाई होती है) के साइज़ में सुधार
  • ध्यान दें कि Compose 1.0 के हिसाब से मटीरियल कॉम्पोनेंट अपने लेआउट स्पेस को बड़ा करेंगे, ताकि टच टारगेट साइज़ के लिए, मटीरियल सुलभता से जुड़े दिशा-निर्देश पूरे हो सकें. उदाहरण के लिए, बटन के टच टारगेट का साइज़ कम से कम 48x48dp तक हो जाएगा, भले ही आपने बटन का साइज़ छोटा सेट किया हो. यह कंपोज़ मटीरियल को मटीरियल डिज़ाइन कॉम्पोनेंट के समान व्यवहार से अलाइन करता है, ताकि व्यू और कंपोज़ को मिक्स करने पर उन्हें एक जैसा व्यवहार मिले. इस बदलाव से यह भी पक्का होगा कि जब Compose मटीरियल कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाया जाता है, तब टच टारगेट की सुलभता से जुड़ी कम से कम ज़रूरी शर्तें पूरी हो जाएं.
  • नेविगेशन रेल के लिए बेहतर सुविधा
  • पहले के प्रयोग से जुड़े कई एपीआई को लगातार बेहतर बना देता है
  • Kotlin के नए वर्शन के लिए सहायता

वर्शन 1.1.0-rc03

26 जनवरी, 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 रिलीज़ हो गया है. वर्शन 1.1.0-rc03 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • 'लिखें' मटीरियल 1.1.0-rc03 के साथ काम करने के लिए अपडेट किया गया

वर्शन 1.1.0-rc01

15 दिसंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये कमिट शामिल हैं.

वर्शन 1.1.0-beta04

1 दिसंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 रिलीज़ हो गया है. वर्शन 1.1.0-beta04 में ये तय किए गए अपडेट शामिल हैं.

नई सुविधाएं

  • Kotlin 1.6.0 के साथ काम करने के लिए अपडेट किया गया

वर्शन 1.1.0-beta03

17 नवंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 रिलीज़ हो गया है. वर्शन 1.1.0-beta03 में ये कमिट शामिल हैं.

वर्शन 1.1.0-beta02

3 नवंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-beta02 रिलीज़ हो गया है. वर्शन 1.1.0-beta02 में ये तय किए गए हिस्से शामिल हैं.

एपीआई में बदलाव

  • स्नैपशॉट कोड को कई फ़ाइलों में बांटा गया था, लेकिन अब भी सभी जो उसी JVM क्लास में रहता है. (Ic6c98)

वर्शन 1.1.0-beta01

27 अक्टूबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 रिलीज़ हो गया है. वर्शन 1.1.0-beta01 में ये तय किए गए हिस्से शामिल हैं.

वर्शन 1.1.0-alpha06

13 अक्टूबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha06 रिलीज़ हो गया है. वर्शन 1.1.0-alpha06 में ये कमिट हैं.

एपीआई में बदलाव

  • InternalCompilerApi को कंपोज़र के उन तरीकों से हटाया गया जो क्रॉस-मॉड्यूल (I1aa0b) को कॉल करने की ज़रूरत है
  • Recomposer.state को बंद कर दिया गया है और उसकी जगह ले ली गई है इसका टाइप बदलकर StateFlow (Ic2ab3, b/197773820) करने के लिए Recomposer.currentState

वर्शन 1.1.0-alpha05

29 सितंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 रिलीज़ हो गया है. वर्शन 1.1.0-alpha05 में ये कमियां हैं.

वर्शन 1.1.0-alpha04

15 सितंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha04 रिलीज़ हो गया है. वर्शन 1.1.0-alpha04 में ये कमियां हैं.

वर्शन 1.1.0-alpha03

1 सितंबर, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha03 रिलीज़ हो गया है. वर्शन 1.1.0-alpha03 में ये कमियां हैं.

नई सुविधाएं

  • Compose कंपाइलर अब Compose रनटाइम (1.0) के पुराने वर्शन के साथ काम करता है. इस बदलाव से पहले, Compose कंपाइलर सिर्फ़ उसी वर्शन या उसके बाद के वर्शन के 'लिखें' रनटाइम के साथ काम करता था. इस बदलाव के बाद, Compose कंपाइलर, Compose रनटाइम (1.0) के पुराने वर्शन के साथ काम करता है. (aosp/1796968)
  • Kotlin 1.5.30 पर निर्भर करने के लिए, कंपोज़ 1.1.0-alpha03 को अपडेट किया गया. (I74545)

वर्शन 1.1.0-alpha02

18 अगस्त, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये कमियां हैं.

वर्शन 1.1.0-alpha01

4 अगस्त, 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha01 रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये कमियां हैं.

संस्करण 1.0

वर्शन 1.0.5

3 नवंबर, 2021

androidx.compose.runtime:runtime-*:1.0.5 रिलीज़ हो गया है. वर्शन 1.0.5 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • DiscoverStateOf इंस्टेंस से जुड़ी क्रैश ट्रैकिंग को ठीक किया गया है. (aosp/1792247)

वर्शन 1.0.4

13 अक्टूबर, 2021

androidx.compose.runtime:runtime-*:1.0.4 रिलीज़ हो गया है. वर्शन 1.0.4 में ये कमिट हैं.

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.31 पर निर्भर करने के लिए अपडेट किया गया

वर्शन 1.0.3

29 सितंबर, 2021

androidx.compose.runtime:runtime-*:1.0.3 रिलीज़ हो गया है. वर्शन 1.0.3 में ये कमियां शामिल हैं.

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.30 पर निर्भर करने के लिए अपडेट किया गया

वर्शन 1.0.2

1 सितंबर, 2021

androidx.compose.runtime:runtime-*:1.0.2 रिलीज़ हो गया है. वर्शन 1.0.2 में ये कमियां शामिल हैं.

कंपोज़ 1.0.2 रिलीज़ के साथ काम करने के लिए अपडेट किया गया. 1.0.2 लिखें, Kotlin 1.5.21 के साथ अब भी काम करता है.

वर्शन 1.0.1

4 अगस्त, 2021

androidx.compose.runtime:runtime-*:1.0.1 रिलीज़ हो गया है. वर्शन 1.0.1 में ये कमियां शामिल हैं.

डिपेंडेंसी से जुड़े अपडेट

  • Kotlin 1.5.21 पर निर्भर करने के लिए अपडेट किया गया.

वर्शन 1.0.0

28 जुलाई, 2021

androidx.compose.runtime:runtime-*:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये कमियां शामिल हैं.

1.0.0 की मुख्य सुविधाएं

यह Compose की पहली ऐसी रिलीज़ है जिसमें बदलाव नहीं किए जा सकते. ज़्यादा जानकारी के लिए, कृपया Compose की रिलीज़ से जुड़ा आधिकारिक ब्लॉग देखें!

आम समस्याएं

  • Android Studio Bumblebee Canary 4 या AGP 7.1.0-alpha04/7.1.0-alpha05 का इस्तेमाल करने पर, ये क्रैश हो सकते हैं:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    इसे ठीक करने के लिए, अपनी build.gradle फ़ाइल में minSdkVersion को कुछ समय के लिए बढ़ाकर 24+ करें. यह समस्या, Android Studio Bumblebee और AGP 7.1 के अगले वर्शन में ठीक कर दी जाएगी. (b/194289155)

वर्शन 1.0.0-rc02

14 जुलाई, 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये कमिट हैं.

  • स्नैपशॉट स्टेट ऑब्ज़र्वर में रेस की स्थितियों को ठीक करने की वजह से स्प्रैटिक हो रहा है NullPointerexcepts. (aosp/1763445, aosp/1758105, b/192677711)
  • रनटाइम स्नैपशॉट की वजह से java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied क्रैश होने की समस्याओं को ठीक किया गया है. (b/193006595, b/192570897)

वर्शन 1.0.0-rc01

1 जुलाई, 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये कमिट शामिल हैं.

वर्शन 1.0.0-beta09

16 जून, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta09 रिलीज़ हो गया है. वर्शन 1.0.0-beta09 में ये कमिट हैं.

प्रोफ़ाइल के नियम जोड़े गए

इस रिलीज़ में, कंपोज़ की सुविधा वाले इन मॉड्यूल में प्रोफ़ाइल के नियम जोड़े गए हैं (I14ed6):

  • androidx.compos.animation
  • androidx.compos.animation-कोर
  • androidx.compos.foundation
  • androidx.compos.foundation-layout
  • androidx.compos.material
  • androidx.compos.material-reple
  • androidx.compos.runtime
  • androidx.compos.ui
  • androidx.compos.ui.geometry
  • androidx.compos.ui.graphics
  • androidx.compos.ui.text
  • androidx.compos.ui.text
  • androidx.compos.ui.unit
  • androidx.comose.ui.util

प्रोफ़ाइल के नियम क्या हैं?

  • किसी लाइब्रेरी के लिए प्रोफ़ाइल नियम, src/main या इसके बराबर की डायरेक्ट्री में मौजूद टेक्स्ट फ़ाइल baseline-prof.txt में तय किए जाते हैं. फ़ाइल हर लाइन में एक नियम तय करती है, जहां इस मामले में नियम, लाइब्रेरी में मौजूद तरीकों या क्लास से मिलान करने के लिए एक पैटर्न है. इन नियमों का सिंटैक्स, adb shell profman --dump-classes-and-methods ... का इस्तेमाल करते समय इस्तेमाल किए जाने वाले ऐसे एआरटी प्रोफ़ाइल फ़ॉर्मैट का सुपरसेट है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. तरीकों या क्लास को टारगेट करने के लिए, ये नियम दो में से कोई एक तरीका अपनाते हैं.

  • तरीके के नियम में यह पैटर्न होगा:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • और क्लास के नियम का पैटर्न इस तरह होगा:

    <CLASS_DESCRIPTOR>
    
  • यहां <FLAGS> एक या एक से ज़्यादा H, S, और P वर्णों का इस्तेमाल करके पता चलता है कि इस तरीके को "हॉट", "स्टार्टअप" या "पोस्ट स्टार्टअप" के तौर पर फ़्लैग किया जाना चाहिए या नहीं.

  • <CLASS_DESCRIPTOR>, उस क्लास का डिस्क्रिप्टर होता है जिससे टारगेट किया गया तरीका जुड़ा है. उदाहरण के लिए, androidx.compose.runtime.SlotTable क्लास का डिस्क्रिप्टर Landroidx/compose/runtime/SlotTable; होगा.

  • <METHOD_SIGNATURE>, तरीके का हस्ताक्षर है. इसमें नाम, पैरामीटर के टाइप, और तरीके के रिटर्न टाइप शामिल होते हैं. उदाहरण के लिए, LayoutNode पर मौजूद fun isPlaced(): Boolean तरीके का हस्ताक्षर isPlaced()Z है.

  • इन पैटर्न में वाइल्डकार्ड (**, *, और ?) हो सकते हैं, ताकि एक नियम में कई तरीकों या क्लास को शामिल किया जा सके.

ये नियम क्या करते हैं?

  • जिस तरीके में H फ़्लैग होता है उससे पता चलता है कि यह तरीका "हॉट" है साथ ही, उसे समय से पहले कंपाइल कर लिया जाना चाहिए.

  • वह तरीका जिसमें S फ़्लैग होता है यह बताता है कि यह एक तरीका है जिसे स्टार्टअप पर कॉल किया जाता है. साथ ही, कंपाइलेशन के खर्च से बचने और स्टार्टअप के समय उसे समझने में होने वाले खर्च से बचने के लिए, इस तरीके को समय से पहले कंपाइल किया जाना चाहिए.

  • जिस तरीके में P फ़्लैग होता है वह बताता है कि यह एक तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.

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

यह कैसे काम करता है?

  • लाइब्रेरी ये नियम तय कर सकती हैं, जिन्हें एएआर आर्टफ़ैक्ट में पैकेज किया जाएगा. जब इन आर्टफ़ैक्ट वाले ऐप्लिकेशन बनाए जाते हैं, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, इन नियमों का इस्तेमाल एक ऐसी कॉम्पैक्ट बाइनरी ART प्रोफ़ाइल बनाने के लिए किया जाता है जो खास तौर पर ऐप्लिकेशन के लिए होती है. इसके बाद, डिवाइसों पर ऐप्लिकेशन इंस्टॉल होने पर ART इस प्रोफ़ाइल का इस्तेमाल कर सकता है, ताकि समय से पहले ऐप्लिकेशन का एक खास सबसेट कंपाइल किया जा सके. इससे ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है, ताकि उसे पहली बार इस्तेमाल किया जा सके. ध्यान दें कि डीबग करने लायक ऐप्लिकेशन पर इसका कोई असर नहीं होगा.

वर्शन 1.0.0-beta08

2 जून, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 रिलीज़ हो गया है. वर्शन 1.0.0-beta08 में ये कमिट हैं.

एपीआई में बदलाव

  • State<T> अब State<out T> है (I69049)
  • मैसेज को फिर से लिखने के लिए, ControlledComposition एपीआई में बदलाव किया गया सिंगल पास को रीकंपोज़ करें. (Iaafd1, b/184173932)

वर्शन 1.0.0-beta07

18 मई, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 रिलीज़ हो गया है. वर्शन 1.0.0-beta07 में ये कमिट हैं.

एपीआई में बदलाव

  • ऐसा नया कंपोज़ कंपाइलर एपीआई जोड़ा गया जो इसकी अनुमति देता है कंपाइलर की ओर से जनरेट की गई सोर्स जानकारी सोर्स को छोटा करने के दौरान हटाया गया. (Ia34e6)
  • ReusableContent का परिचय देता है, जो नोड को बदलने के बजाय, उनकी सामग्री में नोड बदल जाता है. जब कुंजी को यहां दी गई पिछली वैल्यू में बदला जाता है कॉन्टेंट के लिए स्लॉट टेबल को जनरेट किए गए नोड और वैल्यू को अपडेट करने के लिए इस्तेमाल की गई वैल्यू नोड.

    ReusableComposeNode के बारे में बताता है, जो नोड का फिर से इस्तेमाल करेगा इसे बदलने के बजाय उत्सर्जित किया जाता है जैसा कि ComposeNode के लिए किया जाता है. (I1dd86)

  • @ComposeCompilerApi अब @RequiresOptIn नहीं हैं (Iab690)

गड़बड़ियां ठीक की गईं

  • LaZकॉलम/Row में अब ज़्यादा से ज़्यादा, पहले से दिखने वाले दो आइटम चालू रहेंगे (डिस्पोज़ नहीं किए गए). भले ही, उन्हें पहले ही स्क्रोल किया जा चुका हो. इससे कॉम्पोनेंट को चालू सब-कंपोज़िशन का फिर से इस्तेमाल करने की अनुमति मिलती है. ऐसा तब होता है, जब हमें कोई नया आइटम लिखने की ज़रूरत होती है. इससे, स्क्रोल की परफ़ॉर्मेंस बेहतर होती है. (Ie5555)

वर्शन 1.0.0-beta06

5 मई, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 रिलीज़ हो गया है. वर्शन 1.0.0-beta06 में ये तय किए गए हैं.

एपीआई में बदलाव

  • @ComposeCompilerApi अब @RequiresOptIn नहीं हैं (Iab690)

वर्शन 1.0.0-beta05

21 अप्रैल, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 रिलीज़ हो गया है. वर्शन 1.0.0-beta05 में ये कमिट हैं.

एपीआई में बदलाव

  • स्नैपशॉट पढ़ने और लिखने की रिकॉर्डिंग के लिए@InternalComposeApi हटाया गया (Id134d)

गड़बड़ियां ठीक की गईं

  • ui-test-मेनिफ़ेस्ट से और ui-tooling-data, अब Android 12 (I6f9de, b/184718994) के साथ काम करता है

वर्शन 1.0.0-beta04

7 अप्रैल, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 रिलीज़ हो गया है. वर्शन 1.0.0-beta04 में ये कमिट हैं.

गड़बड़ियां ठीक की गईं

  • इस बदलाव से पहले, लोकल कंपोज़ेबल फ़ंक्शन को उनके पैरामीटर के आधार पर स्किप किया जा सकता था. इस बदलाव के बाद, कोई भी लोकल कंपोज़ेबल फ़ंक्शन स्किप नहीं करेगा. यह बदलाव इसलिए किया गया है, क्योंकि यह आम तौर पर किया जाता है. साथ ही, लोकल फ़ंक्शन के लिए यह उम्मीद की जाती है कि वे पैरंट से पैरामीटर कैप्चर करें. साथ ही, उन्हें स्किप करना गड़बड़ी की एक आम वजह है.

    खास जानकारी देने के लिए, इस उदाहरण पर गौर करें:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    इस बदलाव से पहले, count पैरामीटर को अपडेट करने के बाद भी, ShowCount कंपोज़ेबल फ़ंक्शन हमेशा स्किप करता था. अब ऐसा नहीं होता है. (I5648a)

  • इनपुट पैरामीटर (I1b110, b/182403380) के साथ इस्तेमाल किए जाने पर, rememberSaveable() की पुरानी वैल्यू को वापस लाने से जुड़ी समस्या को ठीक कर दिया गया है

वर्शन 1.0.0-beta03

24 मार्च, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 रिलीज़ हो गया है. वर्शन 1.0.0-beta03 में ये कमिट हैं.

एपीआई में बदलाव

  • DefaultMonotonicFrameClock के इस्तेमाल पर रोक लगा दी गई है. कॉल से जुड़ी सुविधा withFrameNanos या Recomposer.runRecomposeAndApplyChanges, जिसमें कोई मैसेज नहीं है MonotonicFrameClock अब IllegalStateException फेंक देगा. (I4eb0d)

वर्शन 1.0.0-beta02

10 मार्च, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 रिलीज़ हो गया है. वर्शन 1.0.0-beta02 में ये तय किए गए अपडेट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक्सपेरिमेंटल एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)
  • नेविगेशन-कंपोज़ के डेस्टिनेशन में इस्तेमाल किए जाने पर, काम न करने वाले rememberSaveable { mutableStateOf(0) } को ठीक किया गया. (I1312b, b/180042685, b/180701630)

वर्शन 1.0.0-beta01

24 फ़रवरी, 2021

androidx.compose.runtime:runtime-*:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये कमिट मौजूद हैं.

यह Compose 1.0.0 बीटा की पहली रिलीज़ है.

एपीआई में बदलाव

  • Recomposer.runRecomposeConcurrentlyAndApplyChanges के साथ शेयर करें अमान्य कंपोज़िशन को फिर से लिखने के लिए एक्सपेरिमेंटल एपीआई फ़्रेम लूप. (I342d0)
  • @ReadOnlyComposable के तौर पर मार्क किए गए सभी कंपोज़ेबल को कंपाइल-टाइम के तौर पर मार्क किया जाता है. इससे यह पक्का किया जाता है कि वे सिर्फ़ दूसरे @ReadOnlyComposables (I58961) को ही कॉल करें
  • compositionLocalOf के लिए defaultFactory और अब इसकी जगह staticCompositionLocalOf की ज़रूरत है ज़रूरी नहीं.

    यह बदलाव ऐसी गड़बड़ी को हटा देता है जो शून्य नहीं हो सकती जहां डिफ़ॉल्ट फ़ैक्ट्री नहीं दिया गया था. पहले यह शून्य न हो सकने वाले टाइप के लिए शून्य संदर्भ उपलब्ध कराएगा.

    शून्य वाले टाइप के लिए, { null } को डिफ़ॉल्ट के तौर पर दें फ़ैक्ट्री में किया गया था.

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

  • कंपोज़ रनटाइम (I3252c) से, अब काम नहीं करने वाले सिंबल हटा दिए गए हैं

  • अब काम नहीं करने वाला emptyContent() हटा दिया गया है. इसके बजाय, {} का इस्तेमाल करें. (Idb33f, b/179432510)

  • सेवा देने वाली कंपनियों का नाम बदलकर ComposeLocalProvider कर दिया गया है

    • कंपोज़िशन कंस्ट्रक्टर अब कुंजी पैरामीटर को स्वीकार नहीं करता और इसे बंद कर दिया गया है.
    • currentCompositeKeyHash को कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय, कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
    • कंपोज़िशन डेटा और कंपोज़िशन ग्रुप को androidx.compos.runtime.tooling नेमस्पेस में ले जाया गया है
    • ComposableLambda को कंक्रीट क्लास के बजाय एक इंटरफ़ेस बनाया गया. इसमें अब टाइप पैरामीटर नहीं हैं.
    • ComposableLambdaN को कंक्रीट की क्लास के बजाय एक इंटरफ़ेस बनाया गया. इसमें अब टाइप पैरामीटर नहीं हैं.
    • स्नैपशॉट Flow फ़ंक्शन को androidx.compos.runtime की जगह पर ले जाया गया है
    • स्नैपशॉटMutationPolicy को मर्ज करने का तरीका अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है
    • @TestOnly शीर्ष लेवल का clearRoots फ़ंक्शन हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • keySourceInfoOf और रीसेटSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
    • Composer.collectKeySourceInfo को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
    • isjoinedKey, includeKeyleft, औरjoinKeyRight विधियों को हटा दिया गया है. अब इनकी ज़रूरत नहीं है.
    • कई टॉप लेवल एपीआई को दूसरी फ़ाइलों में ले जाया गया है और उन्हें अलग-अलग फ़ाइलों में फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक्स की वजह से, यह बाइनरी कंपैटबिलिटी को तोड़ देगा, लेकिन सोर्स के साथ काम नहीं करेगा. इसलिए, ज़्यादातर उपयोगकर्ताओं के लिए यह समस्या नहीं होनी चाहिए.
    • (I99b7d, b/177245490)
  • स्नैपशॉट स्टेट ऑब्ज़र्वर को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता (Id2e6a)

  • पहले से काम न करने वाले कुछ एपीआई मिटाए गए (Ice5da, b/178633932)

  • Material API में ये बदलाव किए गए हैं:

    • डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाने के लिए, Top/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है.
    • ज़रूरी पैरामीटर से पहले, वैकल्पिक पैरामीटर में होने वाले एपीआई के दिशा-निर्देशों का पालन करने के लिए, BackdropScaffold में फिर से क्रम में लगाए गए पैरामीटर.
    • BottomनेविगेशनItem में icon पैरामीटर को selected और onClick के बाद ले जाया गया.
    • BottomनेविगेशनItem में alwaysShowLabels पैरामीटर का नाम बदलकर alwaysShowLabel किया गया.
    • कुछ कॉम्पोनेंट में bodyContent पैरामीटर का नाम बदलकर, सिर्फ़ content किया गया.
    • ButtonDefaults.buttonColors() में पैरामीटर फिर से क्रम में लगाए गए. कृपया ध्यान दें कि पैरामीटर के टाइप में बदलाव नहीं होने की वजह से, आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि नाम वाले पैरामीटर का इस्तेमाल किया जा रहा हो या मैन्युअल तरीके से ऑर्डर को अपडेट किया जा रहा हो. अगर ऐसा नहीं होता है, तो आपका कोड पहले की तरह काम नहीं करेगा.
    • darkColors() में secondaryVariant पैरामीटर जोड़ा गया. आम तौर पर, गहरे रंग वाली थीम का यह रंग secondary जैसा ही होता है. हालांकि, इसे एक जैसा रखने और अपनी पसंद के मुताबिक बनाने के लिए, इस रंग का इस्तेमाल किया जा सकता है.
    • ElegationDefaults और animateElegation() को सार्वजनिक एपीआई की प्लैटफ़ॉर्म से हटा दिया गया है. ऐसा इसलिए किया गया, क्योंकि इनका इस्तेमाल आम तौर पर नहीं किया जाता था या ये काम के नहीं होते थे.
    • Slider में मौजूद onValueChangeEnd का नाम बदलकर, onValueChangeFinished कर दिया गया है. साथ ही, इसे शून्य कर दिया गया है.
    • Snackbar में मौजूद text पैरामीटर का नाम बदलकर content किया गया, ताकि सब कुछ एक जैसा रखा जा सके.
    • डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाने की अनुमति देने के लिए, contentPadding पैरामीटर को DropdownMenuItem में जोड़ा गया. साथ ही, content को RowScope पर एक्सटेंशन के तौर पर बनाया गया.
    • ModalDrawerLayout का नाम बदलकर ModalDrawer किया.
    • BottomDrawerLayout का नाम बदलकर BottomDrawer किया.
    • (I1cc66)

वर्शन 1.0.0-alpha12

10 फ़रवरी, 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha12 रिलीज़ हो गया है. वर्शन 1.0.0-alpha12 में ये कमियां हैं.

एपीआई में बदलाव

  • UiApplier से ViewGroups की सुविधा हटा दी गई है. ऐसे emitView कंपोज़ेबल हटा दिए गए हैं जो अब काम नहीं करते. (Ifb214)
  • कंपोज़िशन रेफ़रंस का नाम बदलकर कंपोज़िशन कॉन्टेक्स्ट (I53fcb) का नाम बदला गया है
  • componentActivity.setContent इस जगह पर भेजा गया androidx.activity.compos.setContent में androidx.activity:activity-compos मॉड्यूल में नहीं है. (Icf416)
  • स्नैपशॉट एपीआई को अपडेट किया गया, ताकि उसे एपीआई के दिशा-निर्देश और इंटरनल क्लास को छिपाने की सुविधा को सार्वजनिक एपीआई से हटा दिया जाता है. (Id9e32)
  • ऐंबियंट के हिसाब से नाम बदला गया -> कंपोज़िशन लोकल का नाम बदलना. पहले ऐंबियंट्स को AmbientFoo कहा जाता था, लेकिन अब ComposeLocals को LocalFoo कहा जाता है. (I2d55d)
  • ऐंबियंट का नाम कंपोज़िशनLocal और staticAmbientOf से कंपोज़िशनLocalOf / staticCompositionLocalOf में बदल दिया गया है. इस बदलाव से ComposeLocal के मकसद को समझने में मदद मिली है: यह किसी कंपोज़िशन के लिए स्थानीय वैल्यू देने / उसे हासिल करने का तरीका है. ComposeLocal इंस्टेंस की शुरुआत Local के साथ होनी चाहिए, जैसे कि val LocalFoo = CompositionLocalOf { Foo() }. (Ia55b6)
  • TakeMutableSnapshot औरtakeSnapshot के पास इन्हें स्नैपशॉट के साथी तरीके के तौर पर इस्तेमाल किया गया है. (I91f19)
  • @ComposableContract की जगह अब तीन और खास जानकारी का इस्तेमाल किया जाता है.

    @ComposableContract(restartable = false), @NonRestartableComposable हो गया है @ComposableContract(readonly = true), @ReadOnlyComposable हो गया है @ComposableContract(preventCapture = true) अब @DisallowComposableCalls बन गया है @ComposableContract(tracked = true) को हटा दिया गया है. (I60a9d)

  • खालीContent() और (@Composable () -> Unit).orEmpty() सुविधा को बंद कर दिया गया है, क्योंकि अब इनकी परफ़ॉर्मेंस या वैल्यू का कोई पॉज़िटिव असर या वैल्यू नहीं है (I0484d)

  • snapshotFlow और withMutableSnapshot अब नहीं हैं एक्सपेरिमेंटल (I6a45f)

  • रीकंपोज़र अब बंद किए जा सकते हैं. बंद रिकंपोज़र जब तक चाइल्ड कोरूटीन पूरा नहीं हो जाता, तब तक बदलाव करना जारी रखें. बंद के कंट्रास्ट के लिए रद्द करने के लिए Recomposer.shutDown का नाम बदला गया. (Ib6d76)

  • compose:runtime-dispatch आर्टफ़ैक्ट अब काम नहीं करता. MonotonicFrameClock को अब लिखें:runtime और AndroidUiDispatcher, लिखें:UI में देखा जा सकता है. (Ib5c36)

  • वह एपीआई जिसे Compose कंपाइलर प्लगिन टारगेट करता है के बजाय इंटरफ़ेस का इस्तेमाल करने के लिए रीफ़ैक्टर किया गया है कंक्रीट क्लास के रूप में पेश किया. इंटरफ़ेस अब एक प्रकार पैरामीटर है.

    यह एक अंदरूनी बदलाव है, जिससे सोर्स पर कोई असर नहीं पड़ना चाहिए कोड के साथ काम करता है, लेकिन यह बाइनरी ब्रेकिंग बदलाव है. (I3b922, b/169406779)

  • स्नैपशॉटMutableState पेश किया गया था (Icfd03)

  • DisposableEffectDisposable का नाम बदलकर Disposaleimpactresults (Ica7c6) कर दिया गया

  • Recomposer.current() हटाया गया. [Absact]Compose अभी व्यू में है डिफ़ॉल्ट रूप से, लेज़ी तरीके से बनाए गए विंडो के स्कोप वाले रीकंपोज़र, विंडो के लिए ViewTreelifecycleOwner. चीज़ों को फिर से व्यवस्थित करें और होस्ट लाइफ़साइकल के दौरान, withFrameNanos पर आधारित ऐनिमेशन के टिक रोक दिए गए हैं को रोक दिया गया है. (I38e11)

  • Recomposer.दौड़ना के लिए Recomposers अब ग्लोबल StateFlow ऑफ़र करते हैं में कंपोज़िशन की मौजूदा स्थिति को देखने के लिए, रीड-ओनली RecomposerInfo प्रक्रिया से बचा जा सकता है. इस एपीआई को Recomposer.current() पर पसंद करें, जो कि अब है बंद कर दिया गया है. (If8ebe)

  • Disposable ImpactDisposable का नाम बदलकर Disposaleimpactresults (I3ea68) कर दिया गया

वर्शन 1.0.0-alpha11

28 जनवरी, 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये कमियां हैं.

एपीआई में बदलाव

  • onCommit, onDispos, और onActive को Sideimpact और Disposableimpact API (If760e) का इस्तेमाल करने की सुविधा नहीं दी है
  • emit() एपीआई और सभी ओवरलोड को बंद कर दिया गया है. इसका नाम बदलकर ComposeNode कर दिया गया है. एपीआई एक जैसे होते हैं. ये सिर्फ़ एक अलग नाम हैं, ताकि Compose (I4137b) के नाम रखने के तरीकों का पालन किया जा सके
  • इन अमान्य और कंपोज़िशन रेफ़रंस() की जगह को अबcurrentRecomposScope और RememberPositionReference की जगह रोक दिया जाता है. (I583a8)
  • Composeलाइफ़साइकल ऑब्ज़र्वर की जगह, RememberObserver को शामिल किया जाता है और कंपोज़िशनलाइफ़साइकल ऑब्ज़र्वर को अब बंद कर दिया गया है.

    RememberObserver इसकी जगह ले रहा है बदले गए सिमेंटिक्स के साथ CompositionLifecycleObserver और नए नाम वाले तरीके. नए एपीआई को मैन्युअल तरीके से बदला जा सकता है उन चीज़ों के लिए जिन्हें सिर्फ़ एक बार याद किया जाता है, जो कि हैं और जारी हैं होना चाहिए. हालांकि, अगर रेफ़रंस फ़ाइल onRemembered कंपोज़िशन में एक से ज़्यादा बार याद रखा गया को कॉल किया गया जहां onEnter को सिर्फ़ एक बार कॉल किया जाता है. onEnter अगर ऑब्जेक्ट का इस्तेमाल सब-कंपोज़िशन में किया गया है, तो इसे एक से ज़्यादा बार कॉल किया गया था, जैसे, WithConstraints और Scaffold ने सिंगल बनाया onEnter की कॉल गारंटी गलत है. इसलिए, इसे इस वजह से हटा दिया गया RememberObserver.

    RememberObserver, onAbandoned को जोड़ता है. इस प्रक्रिया को तब इस्तेमाल किया जाता है, जब पास किए गए कॉलबैक से RememberObserver इंस्टेंस लौटाया जाता है remember को किया गया, लेकिन कंपोज़िशन स्थिति में याद नहीं रखा गया और इसलिए, onRemembered को कभी कॉल नहीं किया जाएगा. यह काम कर सकता है तब होता है जब कोई अपवाद कंपोज़िशन को पूरा करने से पहले खत्म कर देता है या कंपोज़िशन को खारिज कर दिया गया है, क्योंकि राज्य के लिए कंपोज़िशन अब मौजूदा नहीं है या अब नहीं है की ज़रूरत नहीं है. अगर किसी सिंगल कॉलम के बाद RememberObserver का इंस्टेंस ऊपर दिया गया संदर्भ सुझाव किसी बाहरी संसाधन को ट्रैक कर रहा है onForgotten और onAbandoned, दोनों बताते हैं कि संसाधन की अब ज़रूरत नहीं है. अगर ऑब्जेक्ट काम को ट्रैक कर रहा है शुरू किया गया या onRemembered, onAbandoned में दिए गए संसाधन को अनदेखा किया जा सकता है, क्योंकि अगर onRemembered कॉल किया गया. (I02c36)

  • collectAsState() फ़ंक्शन को इनलाइन के तौर पर मार्क न करें (Ia73e4)

गड़बड़ियां ठीक की गईं

  • withConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया और फ़ाउंडेशन के लेआउट का इस्तेमाल शुरू किया गया. (I9420b, b/173387208)
  • टेस्टिंग में TestCoroutineDispatcher का फ़ायदा लें (I532b6)

वर्शन 1.0.0-alpha10

13 जनवरी, 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये कमियां हैं.

ज़बरदस्त बदलाव

  • इंटरनल कंपाइलर को फिर से बनाना एपीआई, जनरेट किए गए नोड में बदलावों के बैच बनाने की अनुमति देता है "बदलाव लागू करें" में कंपोज़िशन की वजह से सभी @Composable फलनों के बाद, कंपोज़िशन का फ़ेज़ पूरा हो चुका है.

    यह व्यवहार पर असर डाल रहा है परिवर्तन जो ऐप्लिकेशन कोड को इस रूप में प्रभावित कर सकता है: नोड अब आंतरिक और एक्सपेरिमेंटल एपीआई, बदलावों के लागू होने के बाद तक लागू किया गया. आम तौर पर, यह तरीका अपनाया जा सकता है: के आस-पास के कोड में ऐसी डिपेंडेंसी के साथ SideEffect कंपोज़ेबल, जिसकी वजह से नोड बनाए जाने तक कोड शुरू किया गया. (I018da)

एपीआई में बदलाव

  • यह ट्रैक करने का एक तरीका जोड़ा है कि रीकंपोज़र ने बदलाव लागू कर दिए हैं. (I1b3e2)
  • [Abstracker]ComposeView को बड़ा करके रीसाइकल करने की अनुमति देना कंपोज़िशन पर आधारित व्यू, जो उनकी कंपोज़िशन को दोबारा इस्तेमाल करने के लिए इस्तेमाल करते हैं बाद में. विंडो के स्कोप वाले रिकंपोज़र इंस्टॉल करने और खोजने के लिए, एपीआई जोड़ें और चाइल्ड कंपोज़िशन बनाने के लिए CompanionReferences.

    कंपोज़िशन डिस्पोज़ल को कॉन्फ़िगर करने के लिए, Viewकंपोज़िशन रणनीति को जोड़ें [Absact]ComposeViews; डिफ़ॉल्ट तरीके से 'डिसपोज़ करें' चालू है विंडो अलग करना. (I860ab)

गड़बड़ियां ठीक की गईं

  • रीकंपोज़र अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है, जिससे उसकी गतिविधि और उससे जुड़े असर पर नज़र रखी जा सकती है. (Ifb2b9)
  • नेटिव keyEvent को अब keyEvent.nativeKeyEvent (I87c57, b/173086397) से ऐक्सेस किया जा सकता है

वर्शन 1.0.0-alpha09

16 दिसंबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये कमियां हैं.

एपीआई में बदलाव

  • स्लॉटटेबल, स्लॉटरीडर, और सार्वजनिक एपीआई का इस्तेमाल करके, खास ऐप्लिकेशन को बदलने की सुविधा. इन्हें इसके तौर पर मार्क किया गया था InternalComposeAPI पहले से था. अब ये अंदरूनी इस्तेमाल के लिए हैं लिखें.

    कंपोज़िशन डेटा और कंपोज़िशन ग्रुप को निकालने के लिए ui-tooling API का इस्तेमाल करना कंपोज़िशन जानकारी. ये सार्वजनिक हैं, लेकिन यह ui-tooling API के बाहर इस्तेमाल किया जाता है, जो वह रॉ जानकारी जिसे ui-tooling API (एपीआई) बताता है (I31a9c)

  • Applier क्लास को अब (Id85b0) नहीं माना जाता

  • Applier इंटरफ़ेस को आसान बनाने के लिए बदल दिया गया है पेड़ों को ऊपर से नीचे की ओर न रखकर, उन्हें नीचे की ओर दिखाना.

    insert() तरीके का नाम बदलकर, insertTopDown() कर दिया गया है.

    नया तरीका insertBottomUp() जोड़ा गया.

    Applier, जिस ट्री में बदलाव कर रहा है उसमें नोड जोड़ता है insertTopDown() या insertBottomUp() का इस्तेमाल किया जा रहा है. यह इस पर निर्भर करता है कि जो बेहतर परफ़ॉर्म करता है.

    LayoutNode और View जैसे कुछ पेड़ बहुत ज़्यादा दिखते हैं और टॉप-डाउन के मुकाबले बॉटम-डाउन को बनाने में ज़्यादा असरदार होते हैं. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए, कई निवेशनों की ज़रूरत थी. की ज़रूरत होती है. इसे हर ऐप्लायर में कॉपी किया जाता है, जिसे बॉटम-अप की ज़रूरत होती है. परफ़ॉर्मेंस के लिए कंस्ट्रक्शन. इस बदलाव के साथ Applier एक ट्री बनाने के लिए insertBottomUp() को ओवरराइड करता है ट्री टॉप-डाउन बनाने के लिए insertTopDown(). (Icbdc2)

  • Compose, प्रॉपर्टी गैटर के साथ काम करता है. इनकी मदद से, कंपोज़ेबल प्रॉम्प्ट बनाए जा सकते हैं. इसके लिए सहायता मिलती रहेगी, लेकिन प्रॉपर्टी गैटर के @Composable के तौर पर एलान करने का सिंटैक्स बदल रहा है.

    ऐसा करने के लिए, अब इस्तेमाल नहीं किया जाने वाला सिंटैक्स, प्रॉपर्टी की जानकारी देता था:

        @Composable val someProperty: Int get() = ...
    

    ऐसा करने के लिए अब सही सिंटैक्स, प्रॉपर्टी के गैटर के बारे में बताना है:

       val someProperty: Int @Composable get() = ...
    

    दोनों सिंटैक्स कुछ समय तक काम करते रहेंगे. हालांकि, पुराना सिंटैक्स बाद में कंपाइल गड़बड़ी में बदल जाएगा. (आईडी9197)

गड़बड़ियां ठीक की गईं

  • Androidमालिक का बनाया गया इंटरनल (Ibcad0, b/170296980)
  • subcomposInto(LayoutNode) को अंदरूनी (Id724a) बनाया गया था

वर्शन 1.0.0-alpha08

2 दिसंबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये कमियां हैं.

एपीआई में बदलाव

  • कंपोज़ेबल लैम्डा पैरामीटर के नाम और उसकी पोज़िशन के लिए लिंट की जांच जोड़ी गई, ताकि यह पता लगाया जा सके कि वह कंपोज़ेबल के दिशा-निर्देशों के मुताबिक है या नहीं. साथ ही, लिंट की जांच और दिशा-निर्देश के मुताबिक, कुछ एपीआई को children का इस्तेमाल करके उनके पीछे के लैम्डा के नाम के तौर पर content पर माइग्रेट किया गया. (Iec48e)
  • रीकंपोज़र अब EmbeddingContext को स्वीकार नहीं करता; आवश्यक शेड्यूल डिपेंडेंसी, ImpactCoroutineContext से लिए जाती हैं. FrameManager अब काम नहीं करता; प्लैटफ़ॉर्म इंटिग्रेशन शुरू होना चाहिए वह भी ग्लोबल स्नैपशॉट को मैनेज कर रही है. (I02369)
  • ResorableState Holder.withRestorableState फ़ंक्शन का नाम बदलकर, ResorableStateProvider (I66640) का नाम बदला गया

गड़बड़ियां ठीक की गईं

  • अब काम नहीं करने वाले ऐंबियंट के नाम में Ambient जुड़ा हुआ है. ऐंबियंट और कंपोज़ एपीआई के दिशा-निर्देशों के मुताबिक, इनकी जगह ऐंबियंट प्रीफ़िक्स के तौर पर नई प्रॉपर्टी जोड़ी गई हैं. (I33440)
  • पुराना ui-test मॉड्यूल और उसके स्टब हटाएं (I3a7cb)

वर्शन 1.0.0-alpha07

11 नवंबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये कमिट हैं.

नई सुविधाएं

एपीआई में बदलाव

  • @UnionType एनोटेशन के इस्तेमाल पर रोक लगा दी गई है (I57cde)
  • ऐंबियंट वैल्यू उपलब्ध कराने के लिए, एक विकल्प के तौर पर OfferDefault जोड़ा गया था. इसका इस्तेमाल, ऐंबियंट वैल्यू तय करने के लिए किया जा सकता है. ये वैल्यू सिर्फ़ तब सेट की जाएंगी, जब पहले से कोई ऐंबियंट वैल्यू न दी गई हो. (आईडी6635, b/171024925)
  • एक जैसी सुविधाओं का इस्तेमाल करने के लिए, LaunchedTask का नाम बदलकर Launchedimpact का इस्तेमाल करें. बिना किसी के लॉन्च किया गया इफ़ेक्ट सबसे सही तरीकों को बढ़ावा देने के लिए, विषय पैरामीटर की अनुमति नहीं है. (Ifd3d4)
  • Applier में अब onbegin changes/onEnd प्रोसेस कॉलबैक मौजूद हैं, जो यह तब शुरू किया जाता है, जब कंपोज़र ट्री में बदलाव लागू करना शुरू कर देता है या पूरा हो जाता है. ज़रूरत पड़ने पर, संसाधन मैनेज करने के एक साथ कई अनुरोध करने के लिए, इनका इस्तेमाल किया जा सकता है. (Icf476)
  • Recomposer को अब बनाते समय, CoroutineContext की ज़रूरत होती है (Ic4610)
  • अंदरूनी स्लॉट टेबल के लागू होने में हुए बदलाव, जो सार्वजनिक एपीआई पर इसका कोई असर नहीं पड़ना चाहिए. (If9828)
  • शुरुआती वैल्यू न लेने वाले, काम नहीं करने वाले rxjava2 अडैप्टर को हटा दिया गया (Idb72f)

गड़बड़ियां ठीक की गईं

  • Foundation.Text को अब हटा दिया गया है और उसे content.Text से बदल दिया गया है. ऐसे बेसिक और बिना डायलॉग वाले टेक्स्ट एपीआई के लिए, androidx.compos.foundation.BasicText देखें, जो किसी थीम की वैल्यू का इस्तेमाल नहीं करता. (If64cb)
  • BaseTextField को बंद कर दिया गया है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
  • लेआउट से जुड़े कई सिंबल को androidx.compos.ui से androidx.compos.layout.ui में ट्रांसफ़र कर दिया गया है. (I0fa98, b/170475424)

बाहरी योगदान

  • लिखने के लिए runtime-rxjava3 मॉड्यूल जोड़ा गया. runtime-rxjava2 (I02cbf) के समान

वर्शन 1.0.0-alpha06

28 अक्टूबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये कमियां हैं.

एपीआई में बदलाव

  • रीकंपोज़र एक कंपोज़िशन रेफ़रंस है और अब यह मान्य है कंपोज़िशन पैरंट. एक्सप्लिसिट रिकंज़र अब कुछ ही जगहों पर ज़रूरी है. (I4036f)
  • Sideimpact में Disposableimpact काउंटरपार्ट एपीआई जोड़ा गया, onCommit-with-params की भूमिका है, लेकिन onDispos ज़रूरी है.
    • रखरखाव से लेकर, बाद तक डेटा को पब्लिश करने के लिए, RememberUpdatedState API को जोड़ा गया ऐसी प्रोसेस जो लंबे समय से चल रही हैं. जैसे, DisposableEffects या LaunchedTasks.
    • (आईडी50b9)
  • म्यूटेबलवेक्टर अब रैंडमAccess (I85d73, b/170461551) लागू करता है
  • इनके खराब असर लागू करने के लिए, साइड इफ़ेक्ट कंपोज़ेबल जोड़ा गया है कंपोज़िशन से मैनेज किए जाने वाले ऑब्जेक्ट में कंपोज़िशन. दुष्प्रभाव यह है onCommit कंपोज़ेबल को बदलने के लिए बनाया गया है. (Ia77c2)
  • नया प्रयोग करने वाला api ReorableStateHolder. यह सब-ट्री को नष्ट करने से पहले, [SavedInstanceState] और [rememberSavedArrayState] से तय किए गए राज्य को सेव करने की अनुमति देता है, ताकि अगली बार इसे वापस लाने वाली स्थिति के हिसाब से तैयार किया जा सके. (I66884, b/166586419)

गड़बड़ियां ठीक की गईं

  • ComposeTestRule में ट्रांज़िशन चालू करें; इसका विकल्प हटाएं ComposeTestRule से ब्लिंक करने वाले कर्सर को चालू करें. (If0de3)

वर्शन 1.0.0-alpha05

14 अक्टूबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमियां हैं.

एपीआई में बदलाव

  • प्रयोग के तौर पर इस्तेमाल किए जाने वाले Modifier.pointerइनपुट इनपुट मॉडिफ़ायर को निलंबित करने की सुविधा (Ia77d2)
  • हर स्क्रोल पर, सबकॉम्पोिशन में कम काम करने से, LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस बेहतर हो जाती है. कंपोज़िशन क्लास के लिए, has invalidations() वाला नया तरीका जोड़ा गया. Recomposer से hasPending changes() तरीके का नाम बदलकर has invalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
  • कंपोज़िशन से कोरूटीन लॉन्च करने के लिए, productState API को जोड़ें जो समय के साथ सिंगल State<T> वैल्यू को अपडेट करते हैं (Id4a57)
  • Compose से मेल खाने के लिए LaunchInकंपोज़िशन का नाम बदलकर LaunchedTask किया गया एपीआई से जुड़े दिशा-निर्देश (I99a8e)
  • कस्टम लेआउट में प्लेस() कॉल का क्रम अब बच्चों के लिए ड्रॉइंग का क्रम तय करता है (Ibc9f6)

वर्शन 1.0.0-alpha04

1 अक्टूबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमियां हैं.

एपीआई में बदलाव

  • इकट्ठा करने की अनुमति देने के लिए,मालिक का दायरा जोड़ा गया लेआउट और ड्रॉइंग के स्कोप तय करने के बाद अब मान्य नहीं है. (Ic4cf8)
  • ऐसी कैलकुलेशन के आधार पर, जो स्टेट ऑब्जेक्ट (If758b) पढ़ (और इनसे मिल सकता है) हो सकती है उनके लिए generateStateOf एपीआई को जोड़ा गया
  • स्नैपशॉट स्टेट ऑब्ज़र्वर (I6e2a9) के लिए TestOnly API को जोड़ा गया

गड़बड़ियां ठीक की गईं

  • Foundation.Box का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया Foundation.layout.Box का इस्तेमाल करें. (Ie5950, b/167680279)

वर्शन 1.0.0-alpha03

16 सितंबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये कमियां हैं.

एपीआई में बदलाव

  • CompositionCoroutineScope अब लागू नहीं होता है MonotonicFrameClock. withFrameNanos के कॉलर को टॉप-लेवल को इंपोर्ट करना चाहिए फ़ंक्शन को साफ़ तौर पर समझना होगा. (Icb642, b/166778123)

गड़बड़ियां ठीक की गईं

  • ग्लोबल टेस्टिंग फ़ंक्शन, जैसे कि onNode या waitForIdle अब इस्तेमाल किए जा सकते हैं तो कृपया इनके नए वर्शन पर माइग्रेट करें. इनके बारे में ComposeTestRule (I7f45a)
  • launchInComposition अब डिस्पैच किए गए कोरूटीन लॉन्च नहीं करता (Ief6af, b/166486000)

वर्शन 1.0.0-alpha02

2 सितंबर, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये कमियां हैं.

एपीआई में बदलाव

  • इस्तेमाल करने के लिए, snapshotFlow और withMutableSnapshot एपीआई जोड़ें और स्नैपशॉट के डेटा में बदलाव करने में मदद मिलती है. (I3e722)
  • कंपोज़ेबल फ़ंक्शन के लिए कॉलिंग कन्वेंशन में बदल दिया गया है. यह बाइनरी ब्रेकिंग बदलाव है. सभी लाइब्रेरी कंपोज़ कंपाइलर प्लगिन के इस वर्शन के साथ काम करने के लिए फिर से कंपाइल किया गया.

    इस बदलाव से, सोर्स लेवल पर नुकसान पहुंचाने वाला कोई बदलाव नहीं होता, क्योंकि जो एपीआई बदले गए हैं वे सिर्फ़ ऐसे कंपाइलर एपीआई हैं जिनमें ऑप्ट-इन करें. (I7afd2, b/158123185)

  • EmbeddingContext (I7b9be) से, शेड्यूल करने के तरीके हटाए गए

  • onPreCommit अब काम नहीं करेगा; onCommit पर अब onPreCommit's है व्यवहार.

    onCommit और onActive अब उसी कोरियोग्राफ़र फ़्रेम में चलते हैं जो कंपोज़िशन में शुरुआत में किए गए बदलाव नहीं होते कोरियोग्राफ़र फ़्रेम की ज़रूरत होती है. (I70403)

वर्शन 1.0.0-alpha01

26 अगस्त, 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमियां हैं.

वर्शन 0.1.0-dev

वर्शन 0.1.0-dev17

19 अगस्त, 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 रिलीज़ हो गया है. वर्शन 0.1.0-dev17 में ये कमियां शामिल हैं.

एपीआई में बदलाव

  • कस्टम उत्सर्जन से अब यह पता चल सकता है कि इसके एक या एक से ज़्यादा सेटर इन्हें छोड़ा जा सकता है और उत्सर्जन से अलग, फिर से शामिल किया जा सकता है. (Ibbd13)
  • ऐसे FrameManager कॉल हटाए गए जो अब काम नहीं करते.

    आंतरिक कंपोज़ API में बदलाव स्टेट ऑब्जेक्ट, जैसे कि mutableStateof() (I80ba6) को ट्रैक करने के लिए ओवरहेड

  • state { ... } कंपोज़ेबल को अब इसका इस्तेमाल करके रोक दिया गया है साफ़ तौर पर जानकारी देने के लिए, remember { mutableStateOf(...) } पर अश्लील कॉल किया गया हो. इससे, राज्य के लिए एपीआई प्लैटफ़ॉर्म और कॉन्सेप्ट की संख्या कम हो जाती है और क्लास के लिए by mutableStateOf() पैटर्न से मेल खाता है प्रॉपर्टी सौंपना. (Ia5727)

  • फ़्लो.collectAsState अब इससे डिफ़ॉल्ट डिस्पैचर का पता लगाता है सबमिट करें. (I9c1d9)

  • स्थिति को सेव करने वाली किसी चीज़ का लूप के अंदर इस्तेमाल किए जाने पर क्रैश हो जाता है. अब से पैसे सेव किए जाने पर, एक ही कुंजी मौजूद होने से UiSavedStateRegistry के एपीआई को अब नई ज़रूरी शर्त के हिसाब से बदल दिया गया है (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561

गड़बड़ियां ठीक की गईं

  • emitView के इस्तेमाल पर रोक लगा दी गई. अगर हो सके, तो Compose में व्यू निकलने के लिए, AndroidView का इस्तेमाल करें. ध्यान दें कि आने वाले समय में, सीधे तौर पर View और ViewGroups बनाने की सुविधा काम नहीं करेगी, जब तक इन्हें कंपोज़िशन ट्री में नहीं रखा जाता. ऐसा होने पर AndroidView का इस्तेमाल करके ऐसा किया जा सकता है. (I29b1e, b/163871221)

वर्शन 0.1.0-dev16

5 अगस्त, 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 रिलीज़ हो गया है. वर्शन 0.1.0-dev16 में ये कमियां शामिल हैं.

एपीआई में बदलाव

  • mutableStateOf() की डिफ़ॉल्ट म्यूटेशन नीति, ambientOf() और savedInstanceStateOf() को बदलकर यह हो गया है: referentialEqualityPolicy() के बजाय structuralEqualityPolicy().

    यह तय करने का डिफ़ॉल्ट कि कोई नई वैल्यू mutableStateOf() इंस्टेंस को बदला गया माना जाता है. अब यह डिफ़ॉल्ट रूप से सेट है === के बजाय == का इस्तेमाल करें.

    https://kotlinlang.org/docs/reference/eक्वालिटी.html देखें

    ambientOf() और savedInstanceStateOf(), mutableStateOf() का इस्तेमाल करते हैं इसलिए, उनमें बदलाव कर रहे हैं, ताकि वे mutableStateOf().

    स्ट्रक्चरल बराबरी का इस्तेमाल, डेवलपर से ज़्यादा बेहतर तरीके से मेल खाता है उम्मीदें.

    उदाहरण के लिए,

    val state = mutableStateOf(1f)
    

    इसके बाद,

    state.value = 1f
    

    को state और इनके इस्तेमाल पर विचार नहीं किया जाएगा कंपोज़िशन के दौरान state को अब फिर से लिखने की ज़रूरत नहीं होगी.

    यह बदलाव नुकसान पहुंचा सकता है. हालांकि, ज़्यादातर मामलों में (जैसे, वे क्लास जो equals() को नहीं बदलतीं), इसका कोई ऐप पर साफ़ तौर पर असर पड़ता है.

    ऐसी क्लास जो equals() को ओवरराइड करती हैं, जैसे कि data क्लास, equals() तरीकों की वजह से, परफ़ॉर्मेंस में गिरावट दिख सकती है अब डिफ़ॉल्ट रूप से, mutableStateOf() के असाइन होने पर कॉल किए जाते हैं.

    नीति जोड़कर, पिछली कार्रवाई को पहले जैसा किया जा सकता है कॉल करने के लिए, policy = referentialEqualityPolicy() पैरामीटर mutableStateOf(), ambientOf(), और savedInstanceStateOf(). (Ic21a7)

  • Row और Column अब काफ़ी हद तक इनलाइन फ़ंक्शन के साथ काम करते हैं कम से कम खर्च हो. (I75c10)

गड़बड़ियां ठीक की गईं

  • setViewContent के इस्तेमाल पर रोक लगा दी गई है. इसके बजाय, setContent का इस्तेमाल किया जाना चाहिए. (I7e497, b/160335130)
  • MonotonicFrameAnimationClock जोड़ा गया, जो आपको इस अंतर को कम करने के लिए, ऐनिमेशनClockObservable के तौर पर MonotonicFrameClock कोरूटीन पर आधारित घड़ियों और एपीआई के बीच अपडेट किया जा रहा है, जो अब भी पुराने वर्शन का इस्तेमाल करते हैं कॉलबैक आधारित घड़ियां.

    मैन्युअल AnimationClock जैसा MonotonicFrameClock अब मैन्युअलFrameClock. (I111c7, b/161247083)

  • Modifier.stateDraggable पूरी तरह से दोबारा काम किया गया और उसका नाम बदला गया को मॉडिफ़ायर. एक नई स्वाइप करने लायक स्टेट क्लास पेश की गई और इससे इनहेरिट करने के लिए, DrawerState और BottomDrawerState को फिर से बनाया गया है. [मोडल/Bottom]DrawerLayout अब onStateChange पैरामीटर नहीं लेता है. (I72332, b/148023068)

  • Modifier.plus को बंद कर दिया गया है. इसके बजाय, Modifier.here का इस्तेमाल करें. 'फिर' यह ऑर्डर करने की प्रोसेस को बेहतर तरीके से दिखाता है. हालांकि, यह Modifier.padding().background() + anotherModifier टाइप करने पर भी पाबंदी लगाता है. इससे चेन टूट जाती है और पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)

  • SubcomposLayout जोड़ा गया. यह एक लो लेवल प्रिमिटिव है. इससे मेज़रमेंट के दौरान बच्चों को कंपोज़ करने में मदद मिलती है. ऐसा तब होता है, जब हमें कुछ उपलब्ध वैल्यू का इस्तेमाल सबट्री कंपोज़िशन को मेज़र करने के दौरान ही करना हो. उदाहरण के लिए, SubcomoseLayout का इस्तेमाल करके withConstraints को लागू नहीं किया गया है. (I25cc8)

  • Material FilledTextField का नाम बदलकर TextField रखा गया है. साथ ही, बुनियादी TextField का नाम बदलकर BaseTextField रखा गया है, ताकि एपीआई को आसानी से खोजा और इस्तेमाल किया जा सके (Ia6242, b/155482676)

  • Modifier.drawbackground का नाम बदलकर Modifier.background (I13677) कर दिया गया है

वर्शन 0.1.0-dev15

22 जुलाई, 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 रिलीज़ हो गया है. वर्शन 0.1.0-dev15 में ये कमियां शामिल हैं.

डिपेंडेंसी अपडेट

  • लिखें के 0.1.0-dev15 वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होगी दिए गए नए कोड स्निपेट के मुताबिक, ऊपर डिपेंडेंसी के बारे में एलान में बताया गया है.

एपीआई में बदलाव

  • @Model एनोटेशन अब काम नहीं करता. विकल्पों के तौर पर, State और modableStateOf का इस्तेमाल करें. रोक लगाने का यह फ़ैसला, बहुत सावधानी से चर्चा करने के बाद लिया गया था.

    वजह बताएं

    वजहों में ये शामिल हैं, लेकिन इनके अलावा, और भी वजहें हो सकती हैं:

    • एपीआई सरफ़ेस एरिया और उन सिद्धांतों को कम करता है जिन्हें हमें पढ़ाने की ज़रूरत होती है
    • तुलना किए जा सकने वाले अन्य टूलकिट के साथ, ये काम ज़्यादा बारीकी से करते हैं. जैसे- Swift यूज़र इंटरफ़ेस (यूआई), React, और Flutter)
    • ऐसा फ़ैसला जिसे वापस लिया जा सकता है. हम @Model को बाद में कभी भी वापस ला सकते हैं.
    • इससे कोने का इस्तेमाल नहीं होता. साथ ही, @Model को उन चीज़ों के तौर पर कॉन्फ़िगर करने से जुड़े सवालों के जवाब देना मुश्किल होता है जिन्हें हमें मैनेज करना होता है
    • @Model डेटा क्लास, इसके बराबर है, हैशकोड वगैरह
    • मैं अपनी कुछ प्रॉपर्टी की “निगरानी” कैसे करूं और कुछ नहीं?
    • मैं निगरानी में इस्तेमाल की जाने वाली स्ट्रक्चरल बनाम रेफ़रेंशियल इक्वलिटी को कैसे तय करूं?
    • सिस्टम में “मैजिक” को कम करता है. इससे किसी व्यक्ति के यह मानने की संभावना कम हो जाती है कि सिस्टम उसे पहले से ज़्यादा स्मार्ट समझ रहा है (यानी कि उसे सूची में फ़र्क़ करने का तरीका पता है)
    • निगरानी के कंट्रोल के लेवल को ज़्यादा आसान बनाता है.
    • वैरिएबल से रीफ़ैक्टरिंग में सुधार करता है -> क्लास में मौजूद प्रॉपर्टी
    • राज्य के हिसाब से, हाथ से बनाए गए ऑप्टिमाइज़ेशन करने के शानदार मौके मिलते हैं
    • यह बाकी नेटवर्क के साथ ज़्यादा करीब से अलाइन हो जाता है. साथ ही, इसमें बदलाव न होने या हमें “म्यूटेबल स्टेट को अपनाना” के बारे में साफ़ तौर पर जानकारी नहीं दी जाती है

    डेटा माइग्रेशन से जुड़े नोट

    @Model के तकरीबन सभी मौजूदा इस्तेमाल को, दो में से किसी एक तरीके से काफ़ी हद तक बदला जा सकता है. यहां दिए गए उदाहरण में, उदाहरण के तौर पर दी गई एक @Model क्लास है. इसमें सिर्फ़ उदाहरण के तौर पर दी गई दो प्रॉपर्टी हैं. साथ ही, इसका इस्तेमाल कंपोज़ेबल में किया गया है.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    पहला विकल्प: State<OriginalClass> का इस्तेमाल करें और कॉपी बनाएं.

    Kotlin के डेटा क्लास की मदद से यह तरीका आसान हो जाता है. असल में, पिछली सभी var प्रॉपर्टी को डेटा क्लास की val प्रॉपर्टी में बदलें. इसके बाद, remember की जगह state का इस्तेमाल करें. साथ ही, डेटा क्लास copy(...) सुविधा तरीके का इस्तेमाल करके, ओरिजनल वैल्यू की क्लोन की गई कॉपी को स्टेट वैल्यू असाइन करें.

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

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    दूसरा विकल्प: म्यूट किए जा सकने वाले स्टेटऑफ़ और प्रॉपर्टी डेलिगेट का इस्तेमाल करें

    यह तरीका, Kotlin की प्रॉपर्टी डेलिगेट की सुविधा और mutableStateOf API की मदद से आसान हो जाता है. इसकी मदद से, कंपोज़िशन के बाहर म्यूटेबलस्टेट इंस्टेंस बनाए जा सकते हैं. ज़रूरी है कि ओरिजनल क्लास की सभी var प्रॉपर्टी को var प्रॉपर्टी से बदलें और mutableStateOf प्रॉपर्टी को उनकी प्रॉपर्टी डेलिगेट के तौर पर चुनें. इसका एक फ़ायदा यह है कि क्लास के इस्तेमाल में कोई बदलाव नहीं होगा. इसकी वजह यह है कि क्लास को सिर्फ़ अंदरूनी तौर पर लागू किया जा सकता है. हालांकि, यह व्यवहार पूरी तरह से मूल उदाहरण के जैसा नहीं है, क्योंकि अब हर प्रॉपर्टी को अलग-अलग देखा जाता है या उसकी सदस्यता ली जाती है. इसलिए, इस रीफ़ैक्टर के बाद आपको दिखने वाले बदलाव ज़्यादा सटीक (एक अच्छी चीज़) हो सकते हैं.

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/7,314}, b/7,414}

  • यह कंपोज़ कंपाइलर की कोड जनरेट करने की रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर कॉल को कंपोज़ेबल फ़ंक्शन में बदल देता था. इस बदलाव के बाद, अब हम कंपोज़ेबल फ़ंक्शन की बॉडी को पूरी तरह बदल देते हैं और ज़्यादातर मामलों में कॉलसाइट में कोई बदलाव नहीं करते.

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

    यह कंपोज़ की सुविधा के सभी इस्तेमाल के लिए, स्रोत के साथ काम करने वाला बदलाव होना चाहिए. 'लिखें' सुविधा का इस्तेमाल करने वाले ज़्यादातर लोगों को इस बदलाव की वजह से कोई कोड अपडेट नहीं करना पड़े.

    यह काम बेहतर हो सके, इसके लिए सभी कंपोज़ेबल फ़ंक्शन के JVM हस्ताक्षर में बदलाव किया गया है. किसी एक पैरामीटर को स्वीकार करने वाला कंपोज़ेबल फ़ंक्शन, तीन पैरामीटर वाले फ़ंक्शन में बदल जाता है. इसके अलावा, कंपोज़र एक 'कुंजी' पूर्णांक भी होता है. कॉल के ज़रिए मेटाडेटा लागू करने के लिए इस्तेमाल किया जाने वाला बिटमास्क पूर्णांक.

    कंपोज़ की सुविधा, अब डिफ़ॉल्ट आर्ग्युमेंट को कंपोज़ेबल फ़ंक्शन में बदल देती है. ऐसा करने के लिए, फ़ंक्शन का अतिरिक्त सिंथेटिक डिफ़ॉल्ट ओवरलोड लागू नहीं होता. इसलिए, इस बदलाव की वजह से कम फ़ंक्शन तय होंगे.

    इसके नतीजे के तौर पर, जान-बूझकर व्यवहार में होने वाले बदलाव:

    1. कुछ कॉल ऐसे कॉल स्किप कर देंगे जो पहले नहीं हो सकते थे
    2. डिफ़ॉल्ट आर्ग्युमेंट एक्सप्रेशन में, कंपोज़ेबल एक्सप्रेशन की सदस्यता अब सही तरीके से ली गई है और उन्हें मैनेज किया जा रहा है

    इस काम में कुछ ऑप्टिमाइज़ेशन शामिल थे: 1. पैरामीटर की तुलना के नतीजों को कॉल ग्राफ़ के ज़रिए, कंपोज़ेबल फ़ंक्शन के साथ दिखाया जाता है. इससे रनटाइम के दौरान तुलनाएं कम हो जाएंगी और स्लॉट टेबल का साइज़ कम हो जाएगा. साथ ही, कंपोज़ेबल फ़ंक्शन को स्किप किया जा सकेगा जिन्हें पहले स्किप नहीं किया गया था 2. कंपाइल किए जाने के समय, "स्टैटिक" पैरामीटर के तौर पर तय किए गए पैरामीटर की न तो तुलना की जाती है और न ही इन्हें रनटाइम में सेव किया जाता है. इससे तुलनाओं की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ कम हो जाता है. 3. फ़ंक्शन के बॉडी के कंट्रोल फ़्लो स्ट्रक्चर का इस्तेमाल, जनरेट होने वाले ग्रुप की संख्या को कम करने के लिए किया जाता है. इससे स्लॉट टेबल का साइज़ कम हो जाता है और रनटाइम में कम काम होता है 4. फ़ंक्शन के लिए इस्तेमाल न किए गए डिस्पैच और रिसीवर पैरामीटर को, फ़ंक्शन के मुख्य भाग के अंदर इस्तेमाल न किए जाने पर, फ़ंक्शन को स्किप करने की क्षमता का पता लगाने के लिए शामिल नहीं किया जाता.

    ज़्यादातर नुकसान पहुंचा सकने वाले बदलाव, उन एपीआई के लिए थे जिन्हें कंपाइलर सीधे तौर पर टारगेट करता है. इससे कंपोज़ की सुविधा के सामान्य इस्तेमाल पर कोई असर नहीं पड़ेगा: 1. कंपोज़र::startExpr हटाया गया 2. कंपोज़र::endExpr को हटा दिया गया 3. Composer::call अब काम नहीं करता 4. key के नॉन-वैरर्ग ओवरलोड हटा दिए गए हैं. आने वाले समय में, vararg वर्शन का इस्तेमाल करें. 5. पिवटल एनोटेशन अब काम नहीं करता. इसकी जगह key का इस्तेमाल करें. 6. ScopeUpdateScope::updateScope फ़ंक्शन1 के बजाय Function3 की उम्मीद के लिए बदला गया था 7. installableFunction और रीस्टार्ट करने लायक फ़ंक्शनN को अपडेट किया गया, ताकि इकट्ठा किए जाने वाले समय के अतिरिक्त पैरामीटर शामिल किए जा सकें (I60756, b/143464846)

  • म्यूटेबल वेक्टर (Icccf7) में सॉर्ट विथ और इसे हटाने वाली रेंज जोड़ी गई

  • इसके लिए, डिफ़ॉल्ट तरीका लागू करने का तरीका जोड़ा गया कंपोज़िशनलाइफ़साइकल ऑब्ज़र्वर (I24289)

  • Applier को नष्ट करने के लिए अब एक clear() तरीके की ज़रूरत है कंपोज़िशन (Ibe697)

  • इसे अनुमति देने के लिए asMutableList() को म्यूटेबल तस्वीर में जोड़ा गया जिसे पूरे डेटा को कॉपी किए बिना सार्वजनिक एपीआई को भेजा जाता हो सूची. (I298df)

  • मैनेज की जा रही किसी रिपोर्ट को पाने के लिए, RememberCoroutineScope() जोड़ा गया इवेंट के जवाब में जॉब लॉन्च करने के लिए कंपोज़िशन में CoroutineScope. (I0e264)

  • म्यूटेबल वेक्टर, एक नया कलेक्शन है. इसमें कोई भी मानक कलेक्शन इंटरफ़ेस लागू करें. यह कलेक्शन में अन्य ज़रूरतों से ज़्यादा स्पीड मिलती है और जो सिर्फ़ अंदरूनी तौर पर इस्तेमाल करने के लिए हों. (I8ebd6)

  • StableMutableList और StableMutableMap को कुछ समय के लिए हटाया गया ताकि Kotlin के वर्शन में कोई समस्या न आए. ये लिखने के वर्शन को किसी वर्शन में अपडेट करने के बाद इंटरफ़ेस फिर से पेश किया जाएगा Kotlin के जिसमें समस्या नहीं है.

    SnapshotStateList और SnapshotStateMap अब सार्वजनिक हैं, लेकिन इन्हें सार्वजनिक तौर पर दिखाया जाएगा StableMutableList और StableMutableMap को वापस लाने के बाद, यह सेवा काम नहीं करती. (Ia7769)

  • ऐनिमेशन टाइमिंग के लिए, टॉप-लेवल withFrameNanos फ़ंक्शन जोड़ें (Ie34c5)

  • @बिना ट्रैक की गई एनोटेशन को हटा दिया गया है. @ComposableContrack(tracked=false) (Id211e) से बदलें

  • रीस्टार्ट करने लायक फ़ंक्शन और उससे जुड़े एपीआई का नाम बदलकर ComposableLambda वगैरह कर दिया गया है. इन एपीआई को सिर्फ़ कंपाइलर ने टारगेट किया था. इसलिए, इससे सोर्स लेवल पर काम करने की सुविधा पर कोई असर नहीं पड़ना चाहिए. नाम बदलने का यह काम मुख्य रूप से यह बताने के लिए किया गया था कि स्टैक ट्रेस (I7eb25) में दिखने पर यह क्लास बेहतर है या नहीं

  • @Composable एनोटेशन अब क्लास (Ia5f02) पर मान्य नहीं है

  • Ambient<T> अब @Imम्यूटेबल (I0b4bb) के बजाय @Stable है

  • इस बदलाव से पहले, (I5205a, b/158123804) होने पर, कंपोज़ कंपाइलर प्लगिन, @Composable फ़ंक्शन के अंदर कंस्ट्रक्टर को किए जाने वाले कॉल को इंटरसेप्ट नहीं करता था

  • रीकंपोज़ेबल कंपोज़ेबल, अब एक मददगार ऐब्स्ट्रैक्ट नहीं है. ज़्यादातर बदलाव, म्यूटेबलस्टेट असाइनमेंट के नतीजे के तौर पर होना चाहिए. इसके अलावा, किसी और चीज़ के लिए हमारा सुझाव है कि आप invalidate फ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से बनाने की प्रोसेस को ट्रिगर करें. (Ifc992)

  • 'निगरानी करें' अब एक उपयोगी ऐब्स्ट्रैक्ट नहीं है. अगर आपको इसकी कॉपी बनानी है, तो इसके लागू किए जाने की प्रोसेस को सिर्फ़ एक कंपोज़ेबल फ़ंक्शन बनाकर दोहराया जा सकता है, जो कंपोज़ेबल लैम्डा पैरामीटर को एक्ज़ीक्यूट करता है. उदाहरण के लिए, @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • @Direct को @ComposableConact(restartable=false) (If4708) के लिए हटा दिया गया था

  • हाल ही में लॉन्च किए गए StateFlow के लिए एक अडैप्टर जोड़ा गया है. इसकी मदद से, शुरुआती वैल्यू को पहले से अपने-आप भरा जा सकता है, ताकि वापस की गई वैल्यू शून्य न हो (I61dd8, b/156233789)

  • फ़्लो के लिए अडैप्टर जोड़ा गया. इस्तेमाल का उदाहरण: val value by flow.collectAsState() (If2198, b/153375923)

  • [Mutable]स्टेट प्रॉपर्टी डेलिगेट ऑपरेटर को एक्सटेंशन पर ले जाया गया Kotlin 1.4 प्रॉपर्टी डेलिगेट ऑप्टिमाइज़ेशन के साथ काम किया जा सकता है. कॉलर को सूची जोड़नी होगी by state { ... } या by mutableStateOf(...) का इस्तेमाल जारी रखने के लिए, इंपोर्ट किए जा सकते हैं. (I5312c)

  • androidx.compos.ViewComposer को androidx.ui.node.UiComposer में ले जाया गया androidx.compos.Emittable को हटा दिया गया है. यह componentNode के साथ काम नहीं करता था. androidx.compos.ViewAdapters को हटा दिया गया है. इनका इस्तेमाल अब नहीं किया जा सकता. Compose.composInto को बंद कर दिया गया है. इसके बजाय, setContent या setViewContent का इस्तेमाल करें. Compose.disposPosition को हटा दिया गया है. इसके बजाय, setContent से मिले Composition पर, dispose तरीके का इस्तेमाल करें. androidx.compos.Compose.subcomposInto को androidx.ui.core.subcomposInto पर ले जाया गया है componentNode#emitInsertAt का नाम बदलकर componentNode#insertAt कर दिया गया है componentNode#emitRemoveAt का नाम बदलकर componentNode#removeAt हो गया है componentNode#emitMode का नाम बदलकर componentNode#move (Idef00) हो गया है

  • ComposeFlags.COMPOSER_PARAM फ़्लैग को true के तौर पर अपडेट किया गया है. इससे कंपोज़ प्लग इन के लिए कोड जनरेट करने की रणनीति बदल जाएगी. हाई लेवल पर, इसकी वजह से @Composable फ़ंक्शन, एक और सिंथेटिक पैरामीटर के साथ जनरेट होता है. इसे बाद में आने वाले @Composable कॉल में पास किया जाता है, ताकि रनटाइम सही तरीके से एक्ज़ीक्यूशन को मैनेज कर सके. हालांकि, यह बाइनरी ब्रेकिंग बदलाव की तरह है. हालांकि, इससे कंपोज़ की सुविधा के सभी पाबंदी वाले इस्तेमाल में, सोर्स-लेवल पर काम करने की सुविधा बनी रहेगी. (I7971c)

  • ऐंबियंट एपीआई में बदलाव किए जा रहे हैं. ज़्यादा जानकारी के लिए, लॉग और Ambient<T> का दस्तावेज़ देखें (I4c7ee, b/143769776)

  • ui-livedata जोड़ा गया - LiveData के लिए अडैप्टर वाला नया आर्टफ़ैक्ट. इस्तेमाल का उदाहरण: लाइवस्ट्रीम के हिसाब सेliveData.observeAsState() (Ie9e8c, b/150465596)

  • जिन Rx अडैप्टर को शुरुआती वैल्यू के तौर पर साफ़ तौर पर नहीं बताया जाता है वे अब काम नहीं करते. शून्य का इस्तेमाल करना हमेशा सबसे अच्छा डिफ़ॉल्ट नहीं होता है. उदाहरण के लिए, जब आपके पास कोई सूची हो, तो खाली सूची()) या किसी दूसरे उचित डिफ़ॉल्ट (I00025, b/161348384) से शुरू करना बेहतर होता है

  • ui-rxjava2 - RxJava2 के लिए अडैप्टर वाला नया आर्टफ़ैक्ट जोड़ा गया. इस्तेमाल का उदाहरण: observable.subscribeAsState() (Ifab4b, b/153369097) की वैल वैल्यू

  • savedInstanceState() का इस्तेमाल, अब शून्य टाइप के साथ किया जा सकता है (I6847f, b/153532190)

  • कस्टम सेवर ऑब्जेक्ट लिखना आसान बनाने के लिए, नई listSaver() और MapSaver() (I8cf68, b/152331508)

  • नए फ़ंक्शन: savedInstanceState() और याद रखने के लिए सेव की गई जगह की जानकारी (जगह). ये State() और Remember() जैसे ही होते हैं. हालांकि, उनमें (If1987, b/152025209) इंस्टेंस स्टेट सपोर्ट बिल्ड मौजूद होता है

गड़बड़ियां ठीक की गईं

  • runOnIdleCompose का नाम बदलकर runOnIdle किया गया (I83607)
  • Made LayoutNode एक्सपेरिमेंट के लिए उपलब्ध एपीआई (I4f2e9)
  • androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करता. टेक्स्ट फ़ील्ड, FilledTextField और CoreTextField कंपोज़ेबल, जो इनका इस्तेमाल करते हैं यह टाइप अब काम नहीं करता. कृपया इस्तेमाल करें इसके बजाय androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • ऐसे Drawबैकग्राउंड को हटाया गया जो अब काम नहीं करता आरेखण बैकग्राउंड एक्सटेंशन के लिए एपीआई संशोधक पर API. रीफ़ैक्टरिंग रंग, ब्रश, और पेंट ड्रॉबैकग्राउंड इसे लागू करने से, कोड पाथ भी कम हो जाते हैं को मॉडिफ़ायर बनाने के लिए उसे हटाना ज़रूरी है कंपोज़िशन के हिस्से के तौर पर शामिल हैं. (I0343a)
  • हायर लेवल अपडेट किया गया ऐसे एपीआई जो कैनवस को अनुमति देते हैं इसके बजाय, CanvasScope का डेटा दिखाएं. यह हटा देता है इसलिए, उपभोक्ताओं को अपने Paint ऑब्जेक्ट. उन उपभोक्ताओं के लिए जो अब भी कैनवस का ऐक्सेस चाहिए वे आरेखण कैनवास एक्सटेंशन का इस्तेमाल कर सकते हैं वह तरीका जो समस्या के लिए कॉलबैक उपलब्ध कराता है ड्रॉइंग कमांड को कैनवस. (I80afd)
  • WithConstraints पीछे lambda API को बदल दिया गया है. अब दो पैरामीटर के बजाय, इसका रिसीवर स्कोप है
  • सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)
  • किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल एलाइनमेंट के लिए wrapContentwidth और wrapContentHight को अपडेट किया गया. वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट स्वीकार करने के लिए, ग्रैविटी मॉडिफ़ायर को अपडेट किया गया. कस्टम निरंतर संरेखण का समर्थन करने के लिए पंक्ति, कॉलम और स्टैक को अपडेट किया गया. (Ib0728)
  • ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है
  • DrawModifier एपीआई को बेहतर बनाएं:
    • आरेखण() ContentDrawScope के लिए पाने वाले का स्कोप बनाया गया
    • आरेखण() पर सभी पैरामीटर हटाए गए
    • DrawScope का इंटरफ़ेस पुराने CanvasScope जैसा ही है
    • ContentDrawScope मेंDrawContent() तरीका (Ibaced, b/152919067) है
  • ColoredRect को बंद कर दिया गया है. इसके बजाय, Box(Modifier.preferredSize(width, height).drawBackground(color)) का इस्तेमाल करें. (I499fa, b/152753731)
  • मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदला गया
  • RowScope और ColumnScope के सदस्यों को अब पंक्ति और कॉलम के बाहर से भी ऐक्सेस किया जा सकता है. (I3a641)
  • LayoutBlogger का नाम बदलकर Layoutweight किया गया. भरने के लिए टाइट पैरामीटर का नाम बदला गया. (If4738)
  • withConstraints को LayoutDirection पैरामीटर मिला (I6d6f7)
  • बैकग्राउंड का नाम बदलकर Drawबैकग्राउंड और इसे डिफ़ॉल्ट रूप से याद रखने के लिए सेट किया गया (Ia0bd3)
  • ButtonStyle को अलग-अलग फ़ंक्शन से बदला गया और टेक्स्ट (स्ट्रिंग) ओवरलोड हटाया गया. इस्तेमाल की जानकारी के लिए, अपडेट किए गए सैंपल देखें. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose और runOnUiThread अब ग्लोबल फ़ंक्शन हैं लिखने के लिए विकल्प पर क्लिक करें. (Icbe8f)

बाहरी योगदान

  • Compose की सुविधा के लिए रनटाइम पोर्टिंग लेयर (I6847d) से लूपर और हैंडलर जैसे ग़ैर-ज़रूरी एपीआई हटाएं
  • Flow<T>.collectAsState() को बिना शुरुआती वैल्यू के बंद करें. इसके बजाय, StateFlow<T> का इस्तेमाल करें या कोई शुरुआती वैल्यू पास करें. (I63f98, b/157674865)