रनटाइम लिखें
androidx.compos.runtime
androidx.compos.runtime.rxjava2
androidx.compos.runtime.rxjava3
androidx.compos.runtime.saveable
androidx.compos.runtime.stapshots
(सभी कंपोज़ पैकेज के लिए एपीआई रेफ़रंस दस्तावेज़ देखें)
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
7 अगस्त, 2024 | 1.6.8 | - | 1.7.0-बीटा07 | - |
संरचना
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.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक और टारगेट करने के लिए Compose कंपाइलर प्लगिन के कोर रनटाइम. |
compos.ui | डिवाइस से इंटरैक्ट करने के लिए कंपोज़ यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट की ज़रूरत होती है. इसमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी तय करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको Google Maven रिपॉज़िटरी को अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.
उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle
फ़ाइल में ज़रूरत है
आपका ऐप्लिकेशन या मॉड्यूल:
ग्रूवी
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.15" } 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.15" } 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-beta07
7 अगस्त, 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
रिलीज़ हो गया है. वर्शन 1.7.0-beta07 में ये प्रतिबद्धताएं शामिल हैं.
वर्शन 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
API के प्रिमिटिव वर्शन जोड़े गए, जिससे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 के एडिटर और अपने प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को जानकारी से बदलकर चेतावनी (या इससे ज़्यादा) करें. इसके लिए, अपने मॉड्यूल के बिल्ड.gradle या create.gradle.kts कॉन्फ़िगरेशन में (I34f7e) के अंदरwarning "AutoboxingStateCreation"
का एलान करें.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
API के प्रिमिटिव वर्शन जोड़े गए, जिससे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" में चेक-इंडेक्स-बाउंड चेक जोड़ा गया तरीका 35a77d3ViewTreeLifecycleOwner
एक्सटेंशन 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 के बाद से हुए अहम बदलाव
अपवाद को मैनेज करना / लाइव एडिट करने के लिए सहायता
- लाइव एडिट करने के दौरान बेहतर तरीके से काम करने के लिए, एपीआई जोड़े गए थे, ताकि कंपोज़िशन के दौरान अपवादों को मैनेज किया जा सके
- हॉट रीलोड के दौरान कंपोज़िशन की गड़बड़ी को मैनेज करना
- सेव करने/पहले जैसा करने के दौरान, लाइव बदलाव करने से जुड़ी गड़बड़ियां ठीक करना
कंपोज़िशन ट्रेसिंग
- नए कंपोज़िशन ट्रेस करने वाले टूल के साथ काम करने के लिए, रनटाइम ट्रेसिंग एपीआई जोड़े गए हैं
- कंपोज़ेबल ट्रेस इवेंट के शुरू/खत्म होने पर कॉल जनरेट करना
- फिर से जोड़ा गया ComposerKt.traceEventStart(Int, स्ट्रिंग)
कंपोज़ेबल रिफ़्लेक्शन एपीआई
- कंपोज़ेबल एपीआई को बेहतर तरीके से रिफ़्लेक्शन के आधार पर शुरू करने की अनुमति देने के लिए, नया
ComposableMethod
एपीआई जोड़ा गया. - रनटाइम लिखने के लिए, conversionComposable को ले जाना
- कंपोज़ेबल तरीके को शुरू करने के लिए, रीवर्क एपीआई
रनटाइम में सुधार
- मार्कर के लिए स्लॉट टेबल की जांच करते समय, खराब रेंज की जांच करने की समस्या को ठीक करना
- एक जगह से दूसरी जगह ले जाए जा सकने वाले कॉन्टेंट को SubcomposLayout में और उससे बाहर ले जाने की अनुमति देना
- कॉन्टेंट को सब-कंपोज़िशन के नए कॉन्टेंट पर ले जाने की समस्या ठीक करना
स्नैपशॉट सिस्टम
- स्नैपशॉट सिस्टम में मेमोरी मैनेजमेंट, परफ़ॉर्मेंस, और उसके सटीक होने से जुड़े कई सुधार किए गए हैं.
- स्नैपशॉट स्टेट ऑब्ज़र्वर में दायरा हटाने की प्रोसेस को ऑप्टिमाइज़ करें
- पारदर्शी स्नैपशॉट से बनाए गए नेस्ट किए गए स्नैपशॉट को नष्ट करना
- ग्लोबल स्नैपशॉट से स्टेटस पढ़ते समय, रेस की तय की गई कंडिशन
- स्नैपशॉट स्टेट ऑब्ज़र्वर में DerivedState के लिए सहायता
- अन्य दायरों में पढ़े जाने पर कंपोज़िशन से अपने-आप जनरेट हुई स्थिति को हटाने से रोकना
- DerivedState में HashMap के बजाय IdentityArrayMap का इस्तेमाल करें
- म्यूटेबल वेक्टर का इस्तेमाल करने के लिए, डिराइव्ड स्टेट ऑब्ज़र्वर को अपडेट करना
- स्नैपशॉट स्टेट ऑब्ज़र्वर स्टेट क्लीनअप को अपडेट करें
- स्नैपशॉटस्टेटऑब्ज़ेक्टर.की अमान्य गतिविधि को ArraySet से बदलें
- ग्लोबल स्नैपशॉट से स्टेटस पढ़ते समय, रेस की तय की गई कंडिशन
- derivedState हैश कैलकुलेशन में पुराने रिकॉर्ड के इस्तेमाल को ठीक करना
- ग्लोबल स्नैपशॉट को बेहतर बनाते समय रेस कंडिशन को ठीक करना
- स्नैपशॉट स्टेट ऑब्ज़र्वर में स्कोप ऑब्ज़र्वेशन के क्लीनअप की रफ़्तार बढ़ाएं
वर्शन 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
में नई सुविधाएं
- एक्सपेरिमेंट के तौर पर इस्तेमाल किए जाने वाले स्नैपशॉट असुरक्षित Enter/छोड़ें
- स्नैपशॉट.asContextElement एक्सपेरिमेंटल एपीआई जोड़ें
- स्नैपशॉट.के बिनारीड ऑब्ज़र्वेशन के बारे में जानकारी दें
- स्टेटस को कंपोज़िशन में बदलने की अनुमति देना
- Compose में सुझाव के तौर पर क्रम में लगाने की सुविधा को ट्रेस करना
1.2
में परफ़ॉर्मेंस
- कंपोज़िशन की स्थानीय परफ़ॉर्मेंस को बेहतर बनाना
- लिखने के लिए बेसलाइन प्रोफ़ाइल, मानदंडों का इस्तेमाल करके बनाई जानी चाहिए
1.2
में गड़बड़ियां ठीक की गईं
- रिलीज़ रीकंपोज़ स्कोप से ट्रैकिंग की जानकारी हटाना
- अन्य दायरों में पढ़े जाने पर कंपोज़िशन से अपने-आप जनरेट हुई स्थिति को हटाने से रोकना
- स्नैपशॉट स्टेट ऑब्ज़र्वर में बेहतर तरीके से removeScope() का इस्तेमाल करें
- कंपोज़िशन में डिपेंडेंट स्टेट डिपेंडेंसी हटाना
- एक जगह से दूसरी जगह ले जाने वाले कॉन्टेंट को अंदरूनी तौर पर फिर से बनाने के बाद, currentCompositeKeyHash के बदलने से जुड़ी समस्या को ठीक करना
- इस्तेमाल के दौरान अमान्य कंपोज़िशन हटाएं
- कंपोज़िशन के दौरान पढ़े जाने की स्थिति को ठीक करना
- डिराइव्ड स्टेट ऑब्जेक्ट को देखते समय, मेमोरी लीक होने की समस्या को ठीक करना
- एक जैसे बने रहने के लिए, मूवेबल कॉन्टेंट कंपोज़िट हैश कुंजी को तय किया गया
- उस कोने को ठीक करें जहां कंपोज़र क्रैश हो सकता है
- पक्का करें कि ग्रुप को ज़बरदस्ती अमान्य तरीके से दोबारा बनाया जाए
- इनपुट के साथ सेव किए जा सकने वाले एलिमेंट को गलत क्रम में वापस लाने पर, गड़बड़ी को ठीक करना
वर्शन 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 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- getStateOf इंस्टेंस से जुड़ी क्रैश ट्रैकिंग को ठीक किया गया. (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 और AGP7.1
के अगले वर्शन में ठीक कर दी जाएगी. (b/194289155)
वर्शन 1.0.0-rc02
14 जुलाई, 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये कमियां शामिल हैं.
- स्नैपशॉट स्टेट ऑब्ज़र्वर में रेस की सही स्थितियां जिनकी वजह से स्प्रैटिक हो रहा है NullPointerअपवाद. (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)
- ऐंबियंट का नाम ComposeLocal और staticAmbientOf नाम से कंपोज़िशनLocalOf / staticPositionLocalOf में बदल दिया गया. इस बदलाव से 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)
DisposableimpactDisposable का नाम बदलकर Disposaleimpactresults (Ica7c6) कर दिया
Recomposer.current() हटाया गया. [ऐब्स्ट्रैक्ट]अभी लिखें डिफ़ॉल्ट रूप से, लेज़ी तरीके से बनाए गए विंडो के स्कोप वाले रीकंपोज़र, विंडो के लिए 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 को SideEffect और 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 फ़ंक्शन का नाम बदलकर, RecorableStateProvider (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 में अब onbeginChange/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] और [rememberSavedInstanceState] के साथ तय किए गए राज्य को सेव करने की सुविधा देता है. इससे अगली बार इसे वापस पहले जैसी की गई स्थिति के हिसाब से तैयार किया जा सकता है. (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)
- कंपोज़िशन से कोरूटीन लॉन्च करने के लिए, generateState 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 को फिर से बनाया गया है. [मोडल/बॉटम]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. कंपाइल किए जाने के समय, "स्टैटिक" पैरामीटर के तौर पर तय किए गए पैरामीटर की न तो तुलना की जाती है और न ही इन्हें रनटाइम में सेव किया जाता है. इससे तुलनाओं की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ कम हो जाता है. 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>
अब @Immuable (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 byflow.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)