कंपोज़ रनटाइम
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(सभी Compose पैकेज के लिए, एपीआई का संदर्भ देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 17 जून, 2026 | 1.11.3 | - | 1.12.0-beta01 | - |
संरचना
Compose में androidx के अंदर सात Maven ग्रुप आईडी का कॉम्बिनेशन होता है. हर ग्रुप में, फ़ंक्शन का एक टारगेट किया गया सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक के बारे में बताया गया है.
| समूह | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | @Composable फ़ंक्शन को बदलें और Kotlin कंपाइलर प्लगिन की मदद से ऑप्टिमाइज़ेशन चालू करें. |
| compose.foundation | इस्तेमाल के लिए तैयार बिल्डिंग ब्लॉक की मदद से, Jetpack Compose ऐप्लिकेशन लिखें. साथ ही, अपने डिज़ाइन सिस्टम के कॉम्पोनेंट बनाने के लिए, फ़ाउंडेशन को बढ़ाएं. |
| compose.material | मटीरियल डिज़ाइन कॉम्पोनेंट का इस्तेमाल करके, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. यह Compose का टॉप लेवल एंट्री पॉइंट है. इसे ऐसे कॉम्पोनेंट उपलब्ध कराने के लिए डिज़ाइन किया गया है जो www.material.io पर बताए गए कॉम्पोनेंट से मेल खाते हैं. |
| compose.material3 | Material Design 3 कॉम्पोनेंट की मदद से, Jetpack Compose यूज़र इंटरफ़ेस (यूआई) बनाएं. ये कॉम्पोनेंट, Material Design का अगला वर्शन हैं. Material 3 में, थीमिंग और कॉम्पोनेंट को अपडेट किया गया है. साथ ही, इसमें Material You की उपयोगकर्ता की गतिविधि और दिलचस्पी के हिसाब से उपलब्ध सुविधाएं भी शामिल हैं. जैसे, डाइनैमिक कलर. इसे Android 12 की नई विज़ुअल स्टाइल और सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करने के लिए डिज़ाइन किया गया है. |
| compose.runtime | Compose के प्रोग्रामिंग मॉडल और स्टेट मैनेजमेंट के बुनियादी बिल्डिंग ब्लॉक. साथ ही, Compose Compiler Plugin के लिए मुख्य रनटाइम, ताकि उसे टारगेट किया जा सके. |
| compose.ui | डिवाइस के साथ इंटरैक्ट करने के लिए, Compose यूज़र इंटरफ़ेस (यूआई) के बुनियादी कॉम्पोनेंट. इनमें लेआउट, ड्रॉइंग, और इनपुट शामिल हैं. |
डिपेंडेंसी का एलान करना
Compose पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.11.3" implementation "androidx.compose.runtime:runtime-livedata:1.11.3" implementation "androidx.compose.runtime:runtime-rxjava2:1.11.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.11.3") implementation("androidx.compose.runtime:runtime-livedata:1.11.3") implementation("androidx.compose.runtime:runtime-rxjava2:1.11.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.12
वर्शन 1.12.0-beta01
17 जून, 2026
androidx.compose.runtime:runtime-*:1.12.0-beta01 रिलीज़ हो गया है. वर्शन 1.12.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें स्नैपशॉट लागू करने वाले ऑब्ज़र्वर को सूचना नहीं मिलती थी. ऐसा तब होता था, जब किसी स्नैपशॉट में कोई स्टेट ऑब्जेक्ट बनाया जाता था और फिर पहले स्नैपशॉट के लागू होने से पहले, उसे किसी दूसरे स्नैपशॉट में बदल दिया जाता था. (Ide27f, b/451479063)
- कंपोज़िशन में
derivedStateOf()वैल्यू को ट्रैक करने के तरीके में मेमोरी लीक की समस्या को ठीक किया गया है. डिराइव की गई स्थिति से पढ़े गए ऑब्जेक्ट में फ़ॉरवर्ड राइट करने की वजह से, कंपोज़िशन के बंद होने तक कंपोज़िशन मेंderivedStateOf()इंस्टेंस बना रहता है. अगरderivedStateOf()को सही तरीके से याद नहीं रखा जाता है, तो यह लीक काफ़ी अहम हो सकता है, क्योंकि हर कंपोज़िशन एक नया लीक बना सकती है. (Ib5d87, b/516904513) - हमने
LinkComposerमें मौजूद उस समस्या को ठीक कर दिया है जिसकी वजह से कंपोज़िशन के दौरान अमान्य होने पर, कंपोज़ेबल फिर से कंपोज़ होने के बजाय स्किप हो जाते थे. (Ie29fe) rememberके vararg ओवरलोड से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, याद रखी गई वैल्यू अमान्य नहीं होती थी और remember से गलत वैल्यू मिलती थी. ऐसा तब होता है, जबrememberको कम कुंजियों के साथ फिर से कंपोज़ किया जाता है. ये कुंजियां, पिछली कुंजियों के जैसी ही होती हैं. हालांकि, इसमें ऐरे के आखिर के एलिमेंट शामिल नहीं होते. इस फ़िक्स को पाने के लिए, समस्या वाले कोड को फिर से कंपाइल करना होगा. (I0736b)
बाहरी योगदान
- Compose रनटाइम में,
DisposableEffectऔरSideEffectके लिए वर्बोस ट्रेसिंग जोड़ी गई. (Ie451f)
वर्शन 1.12.0-alpha03
19 मई, 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha03 रिलीज़ हो गया है. वर्शन 1.12.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LinkTableमें कई समस्याएं ठीक की गईं. इनमें ऐसी समस्याएं भी शामिल हैं जहां डाइग्नोस्टिक स्टैक ट्रेस में जानकारी नहीं होती थी या जानकारी मौजूद नहीं होती थी (I3918c)- हमने इंटरनल डेटा टाइप में मौजूद एक समस्या को ठीक किया है. इससे, कुछ मामलों में मूव किए जा सकने वाले कॉन्टेंट में अपवाद हो सकता था. (Ic478f, b/507724717)
LinkComposerके स्किप करने के तरीके से जुड़ी समस्या को ठीक किया गया है. इस वजह से,GapComposerकी तुलना में अलग-अलग नतीजे मिलते थे. साथ ही, डिफ़ॉल्ट आर्ग्युमेंट की फिर से गिनती की जाती थी और टेस्ट टाइम आउट हो जाते थे. (I783dc)
वर्शन 1.12.0-alpha02
6 मई, 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha02 रिलीज़ हो गया है. वर्शन 1.12.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SideEffectमें एक ओवरलोड जोड़ा गया है, जो मुख्य आर्ग्युमेंट स्वीकार करता है. नए एपीआई का इस्तेमाल, एक बार मेंSideEffectsको ट्रिगर करने के लिए किया जा सकता है. इसके लिए,LaunchedEffectयाDisposableEffectकी ज़रूरत नहीं होती है. साथ ही,CoroutineScopeयाonDisposeब्लॉक का इस्तेमाल नहीं किया जाता है. (I528b2, b/476108743)
वर्शन 1.12.0-alpha01
22 अप्रैल, 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha01 रिलीज़ हो गया है. वर्शन 1.12.0-alpha01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- LinkTable में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से नोड के अमान्य ऑपरेशन हो सकते हैं. (I491c3)
- Compose के compileSdk को API 37 पर अपडेट किया गया है. इसका मतलब है कि Compose का इस्तेमाल करते समय, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)
- LinkTable में कैश मेमोरी से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, कॉन्टेंट डालने पर लिंक का साइज़ बदल जाता था. इससे पुरानी वैल्यू पढ़ी जाती थीं. इसकी वजह से, CompositionLocals को हल नहीं किया जा सका. (I8016c)
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से
T.writableRecord, गैर-ज़रूरीIllegalStateExceptions दिखा रहा था (Ia778f, b/440975176)
रनटाइम ट्रेसिंग का वर्शन 1.7
वर्शन 1.7.0-rc01
18 सितंबर, 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
रनटाइम ट्रेसिंग वर्शन 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पिन की गई डिपेंडेंसी को सबसे कम स्टेबल वर्शन (जैसे, compose-runtime और tracing-perfetto) पर सेट किया गया है. इससे उस समस्या को ठीक किया गया है जिसमें compose-runtime-tracing, ऐप्लिकेशन में compose-runtime का नया वर्शन लाता था.
वर्शन 1.0.0-alpha04
23 अगस्त, 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- यह Benchmark और Tracing Perfetto के नए वर्शन के साथ काम करता है.इससे ऐप्लिकेशन के स्टार्टअप (कोल्ड स्टार्ट) के दौरान कंपोज़िशन ट्रेसिंग की सुविधा मिलती है. उदाहरण के लिए, AndroidX Benchmark और Android Studio (Hedgehog Beta 2 से शुरू होने वाले वर्शन).
एपीआई में हुए बदलाव
androidx.tracing.perfetto.Traceका नाम बदलकरandroidx.tracing.perfetto.PerfettoSdkTraceकर दिया गया. (I44af8)- Perfetto SDK के एपीआई को
android.os.Traceके साथ काम करने लायक बनाया गया है. (I73ba0, b/282199917) - ऐप्लिकेशन के स्टार्टअप पर ट्रेसिंग के लिए ज़रूरी शर्तें. (Iad890)
- एक्सपेरिमेंटल और सार्वजनिक एपीआई फ़ाइलें मर्ज की गईं (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.11
वर्शन 1.11.3
17 जून, 2026
androidx.compose.runtime:runtime-*:1.11.3 रिलीज़ हो गया है. वर्शन 1.11.3 में ये बदलाव शामिल हैं.
वर्शन 1.11.2
19 मई, 2026
androidx.compose.runtime:runtime-*:1.11.2 रिलीज़ हो गया है. वर्शन 1.11.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने इंटरनल डेटा टाइप में मौजूद एक समस्या को ठीक किया है. इससे, कुछ मामलों में मूव किए जा सकने वाले कॉन्टेंट में अपवाद हो सकता था. (Ic478f, b/507724717)
वर्शन 1.11.1
6 मई, 2026
androidx.compose.runtime:runtime-*:1.11.1 रिलीज़ हो गया है. वर्शन 1.11.1 में ये बदलाव शामिल हैं.
वर्शन 1.11.0
22 अप्रैल, 2026
androidx.compose.runtime:runtime-*:1.11.0 रिलीज़ हो गया है. वर्शन 1.11.0 में ये बदलाव शामिल हैं.
1.10.0 के बाद हुए अहम बदलाव:
नया एक्सपेरिमेंटल SlotTable
- हमने
SlotTableको फिर से लिखा है. यह एक इंटरनल डेटा स्ट्रक्चर है. इसका इस्तेमाल Compose Runtime, कंपोज़िशन के क्रम को ट्रैक करने, रीकंपोज़िशन की वजह से हुए बदलावों का पता लगाने, और याद रखी गई वैल्यू को सेव करने के लिए करता है. इस रीराइट का मकसद, रीकंपोज़िशन की परफ़ॉर्मेंस को बेहतर बनाना है. इसके लिए, यह गैप बफ़रSlotTableकी तुलना में, मेमोरी कॉपी करने की कार्रवाइयों का इस्तेमाल कम करता है. कंपोज़िशन के क्रम में किए गए कुछ बदलावों को पहले की तुलना में दो गुना तेज़ी से फिर से कंपोज़ किया जा सकता है. जैसे, आइटम की लंबी सूची का क्रम बदलनाSlotTable. नएSlotTableको लागू करने पर, अन्य ज़्यादातर कार्रवाइयां 10% तेज़ी से होती हैं. रनटाइम में इस्तेमाल किया गयाSlotTable, सभी कंपोज़ेबल तरीकों पर असर डालता है. इसके लिए, फिर से कंपाइल करने की ज़रूरत नहीं होती. नएSlotTableका इस्तेमाल करने से, पूरे ऐप्लिकेशन में बदलाव होता है. इसमें डिपेंडेंसी भी शामिल हैं. SlotTableको लागू करने की यह सुविधा अब भी एक्सपेरिमेंट के तौर पर उपलब्ध है. फ़िलहाल, यह डिफ़ॉल्ट रूप से बंद है.ComposeRuntimeFlags.isLinkBufferComposerEnabledकोtrueपर सेट करके, इसे चालू किया जा सकता है. रिलीज़ बिल्ड में, अगर कोड छोटा करने की सुविधा चालू है, तो रनटाइम के साथ उपलब्ध कराई गई डिफ़ॉल्ट proguard-rules.pro फ़ाइल में इस वैल्यू को 'गलत है' माना जाता है. प्रोडक्शन में नएSlotTableको चालू करने के लिए, इस अनुमान को ऐप्लिकेशन कीproguard-rules.proफ़ाइल में बदलकर 'सही' पर सेट करना होगा. ज़्यादा जानकारी के लिए,ComposeRuntimeFlags.isLinkBufferComposerEnabledपर दिया गया दस्तावेज़ देखें.
होस्ट-डिफ़ॉल्ट कंपोज़िशन लोकल
compositionLocalWithHostDefaultOfजोड़ा गया है. इससे CompositionLocals को उनकी डिफ़ॉल्ट वैल्यू के लिए, होस्टिंग एनवायरमेंट (जैसे, AndroidViewटैग) पर फ़ॉलबैक करने की अनुमति मिलती है.
SnapshotFlowManager की मदद से, snapshotFlow को ज़्यादा बेहतर तरीके से मॉनिटर करना
SnapshotFlowManagerके ज़्यादा असरदार ऑब्ज़र्वेशन के लिए,SnapshotFlowManagerएपीआई लॉन्च किया गया.snapshotFlowएक हीSnapshotFlowManagerका इस्तेमाल कईsnapshotFlowइंस्टेंस के लिए करने पर, स्नैपशॉट लागू करने वाले कम ऑब्ज़र्वर रजिस्टर होते हैं. इससे प्रोसेसिंग की स्थिति के अपडेट तेज़ी से मिलते हैं.
वर्शन 1.11.0-rc01
08 अप्रैल, 2026
androidx.compose.runtime:runtime-*:1.11.0-rc01 रिलीज़ हो गया है. वर्शन 1.11.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.11.0-beta02
25 मार्च, 2026
androidx.compose.runtime:runtime-*:1.11.0-beta02 रिलीज़ हो गया है. वर्शन 1.11.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- WASM में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, आइडेंटिटी हैश कोड हमेशा 0 दिखाता था (I9d70c)
- उस समस्या को ठीक किया गया है जिसमें नेस्ट किए गए किसी डिराइव्ड स्टेट की डिपेंडेंसी बदलने पर, पैरंट डिराइव्ड स्टेट सही तरीके से अमान्य नहीं हो पाता था (Ia7981, b/481750019)
LinkTableमें मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से कंपोज़िशन को हटाने के बाद अमान्य राइट हो सकते हैं. (I5c97a)LinkTableमें मौजूद एक समस्या को ठीक किया गया है. इसकी वजह से, कॉपी करने की प्रोसेस के दौरान टेबल का साइज़ बदलने पर अमान्य डेटा लिखा जा सकता है (Ie7edf)LinkTableमें मौजूद उस समस्या को ठीक करता है जिसकी वजह से नोड (I58a4a) की सेव की गई वैल्यू गलत तरीके से अपडेट होती हैLinkTableअब कम क्षमता के साथ शुरू होता है. इससे, कम हीप साइज़ (I112b9) वाले डिवाइसों पर कई सबकंपोज़िशन बनाते समय, ओओएम से जुड़ी गड़बड़ियां नहीं होती हैं
वर्शन 1.11.0-beta01
11 मार्च, 2026
androidx.compose.runtime:runtime-*:1.11.0-beta01 रिलीज़ हो गया है. वर्शन 1.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SnapshotFlowManagerऔरmanagerपैरामीटर स्वीकार करने वालेsnapshotFlowके ओवरलोड को अब एक्सपेरिमेंटल के तौर पर मार्क किया गया है (I5c1a5, b/486077876, I0de71, b/486077876)
गड़बड़ियां ठीक की गईं
- रोकने लायक कंपोज़िशन में, "Apply is called on deactivated node" क्रैश की समस्या ठीक की गई (I880c0, b/484300733)
LinkTableमें मौजूद उस समस्या को ठीक कर दिया गया है जिसकी वजह सेMovableContentका इस्तेमाल करते समय,ArrayIndexOutOfBoundsExceptionsया मेटाडेटा खराब हो सकता था. (I8452b)LinkTableमें मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, डाइग्नोस्टिक ट्रेस की जानकारी सही तरीके से नहीं भरी जा रही थी (I59868)- नई SlotTable में एक समस्या को ठीक किया गया है. इसमें
MovableContentमें इस्तेमाल किया गयाRememberObserversहटाने पर,OutOfMemoryError/infiniteलूप की समस्या हो सकती थी. (I884e7)
वर्शन 1.11.0-alpha06
25 फ़रवरी, 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha06 रिलीज़ हो गया है. वर्शन 1.11.0-alpha06 में ये बदलाव शामिल हैं.
वर्शन 1.11.0-alpha05
11 फ़रवरी, 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha05 रिलीज़ हो गया है. वर्शन 1.11.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposeRuntimeFlags.isMovingNestedMovableContentEnabled, रनटाइम फ़ीचर फ़्लैग को हटा दिया गया है. (I3ee62, b/455588848)HostDefaultKeyकोopen classसेinterfaceमें बदला गया. इससे कुंजियों को एक से ज़्यादा लुकअप मैकेनिज़्म (जैसे किViewTreeHostDefaultKey) लागू करने की अनुमति मिलती है. ऐसा सिंगल-क्लास इनहेरिटेंस से जुड़ी पाबंदियों के बिना किया जा सकता है. इससे कस्टम होस्टिंग एनवायरमेंट के लिए एक्सटेंसिबिलिटी बेहतर होती है. (I917a2)HostDefaultProviderऔरLocalHostDefaultProviderअबpublicहो गए हैं. इससे कस्टम होस्टिंग एनवायरमेंट, प्लैटफ़ॉर्म के हिसाब से स्थानीय भाषाओं के लिए वैल्यू तय कर सकते हैं. (I5bdbe)
गड़बड़ियां ठीक की गईं
- दो थ्रेड पर एक साथ दो
snapshotFlowचलाने पर, डेडलॉक होने की समस्या को ठीक किया गया है. (Ib4339) - लिंक टेबल में मौजूद एक समस्या को ठीक किया गया है. इसकी वजह से, टूलिंग, क्रम में मौजूद कंपोज़ेबल को छोड़ सकती थी और सबकंपोज़िशन को गलत तरीके से लिंक कर सकती थी (I7178e)
बाहरी योगदान
- produceState ब्लॉक में वैल्यू को बदलने के लिए यूनरी ऑपरेटर का इस्तेमाल करते समय, Lint के फ़ॉल्स पॉज़िटिव की समस्या ठीक की गई (I1c7c9)
वर्शन 1.11.0-alpha04
28 जनवरी, 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha04 रिलीज़ हो गया है. वर्शन 1.11.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव.
- हमने
SlotTableको फिर से लिखा है. यह एक इंटरनल डेटा स्ट्रक्चर है. इसका इस्तेमाल Compose Runtime, कंपोज़िशन के क्रम को ट्रैक करने, रीकंपोज़िशन की वजह से हुए बदलावों का पता लगाने, और याद रखी गई वैल्यू को सेव करने के लिए करता है. इस रीराइट का मकसद, रीकंपोज़िशन की परफ़ॉर्मेंस को बेहतर बनाना है. इसके लिए, यह गैप बफ़रSlotTableकी तुलना में, मेमोरी कॉपी करने की कार्रवाइयों का इस्तेमाल कम करता है. कंपोज़िशन के क्रम में किए गए कुछ बदलावों को पहले की तुलना में दो गुना तेज़ी से फिर से कंपोज़ किया जा सकता है. जैसे, आइटम की लंबी सूची का क्रम बदलनाSlotTable. नएSlotTableको लागू करने पर, अन्य ज़्यादातर कार्रवाइयां 10% तेज़ी से होती हैं. रनटाइम में इस्तेमाल किया गयाSlotTable, सभी कंपोज़ेबल तरीकों पर असर डालता है. इसके लिए, फिर से कंपाइल करने की ज़रूरत नहीं होती. नएSlotTableका इस्तेमाल करने से, पूरे ऐप्लिकेशन में बदलाव होता है. इसमें डिपेंडेंसी भी शामिल हैं. - फ़िलहाल,
SlotTableको डिफ़ॉल्ट रूप से बंद किया गया है. इसे चालू करने के लिए,ComposeRuntimeFlags.isLinkBufferComposerEnabledकोtrueपर सेट करें. - रिलीज़ बिल्ड में, अगर कोड छोटा करने की सुविधा चालू है, तो रनटाइम के साथ उपलब्ध कराई गई डिफ़ॉल्ट
proguard-rules.proफ़ाइल में इस वैल्यू कोfalseमाना जाता है. प्रोडक्शन में नएSlotTableको चालू करने के लिए, ऐप्लिकेशन कीproguard-rules.proफ़ाइल में इस अनुमान कोtrueमें बदलना होगा. ज़्यादा जानकारी के लिए,ComposeRuntimeFlags.isLinkBufferComposerEnabledपर दिया गया दस्तावेज़ देखें. (Ib741d, b/268366116)
नई सुविधाएं
compositionLocalWithHostDefaultOfजोड़ा गया है. इससेCompositionLocalsको डिफ़ॉल्ट वैल्यू के लिए, होस्टिंग एनवायरमेंट (जैसे, Android View टैग) पर फ़ॉलबैक करने की अनुमति मिलती है. (I15b81)
गड़बड़ियां ठीक की गईं
- यह पक्का किया गया है कि ज़रूरी आवेदन सूचनाएं भेजे जाने तक,
Snapshot.sendApplyNotificationsकॉल वापस नहीं आ सकतीं. (I95f20, b/418800424) - जब रनटाइम में सोर्स की जानकारी मौजूद न हो, तो सोर्स की जानकारी के स्टैक ट्रेस को ग्रुप कुंजियों पर डाउनग्रेड होने से रोकें. (If3712)
ComposeToolingFlagsके बारे में जानकारी दें. इन फ़्लैग को हमेशा के लिए सेट किया जाता है. इन्हेंComposeRuntimeFlagsके तौर पर सेट नहीं किया जाता है. इनका इस्तेमाल टूलिंग की उन सुविधाओं के लिए किया जाता है जिनका परफ़ॉर्मेंस पर काफ़ी असर पड़ता है. (I87863)
बाहरी योगदान
- नया एक्सपेरिमेंटल
RecomposerInfo#errorStateएपीआई (I0decc) FunctionKeyMetaएनोटेशन केAnnotationRetentionको 'BINARY' (I53495) में बदलें
वर्शन 1.11.0-alpha03
14 जनवरी, 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha03 रिलीज़ हो गया है. वर्शन 1.11.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SnapshotFlowManagerक्लास को पेश किया गया है. साथ ही,snapshotFlowमें एक वैकल्पिकSnapshotFlowManagerपैरामीटर जोड़ा गया है. इससे उपयोगकर्ताओं को, रजिस्टर किए गए स्नैपशॉट लागू करने वाले ऑब्ज़र्वर की संख्या को ऑप्टिमाइज़ करने की सुविधा मिलती है. (I6289b, b/446746211)
गड़बड़ियां ठीक की गईं
- कॉन्टेंट को किसी दूसरी जगह पर ले जाकर डालने की सुविधा (Ibf176) के लिए, ट्रेस एनोटेशन जोड़ा गया
वर्शन 1.11.0-alpha02
17 दिसंबर, 2025
androidx.compose.runtime:runtime-*:1.11.0-alpha02 रिलीज़ हो गया है. वर्शन 1.11.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
isMovableContentUsageTrackingEnabledफ़्लैग हटाया गया (I71e2b, b/427960130)
बाहरी योगदान
- लाइव एडिट की सुविधा से जुड़ी उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, गड़बड़ी ठीक नहीं हो पाती थी. (Ieb34f)
वर्शन 1.11.0-alpha01
03 दिसंबर, 2025
androidx.compose.runtime:runtime-*:1.11.0-alpha01 रिलीज़ हो गया है. वर्शन 1.11.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
RetainedValuesStore.getExitedValueOrDefaultका नाम बदलकरconsumeExitedValueOrDefaultc7a0929 कर दिया गया है- एक साथ कई बार रेंडर करने की सुविधा वाले एक्सपेरिमेंटल एपीआई को हटाया गया है.(c8af15d)
वर्शन 1.10
वर्शन 1.10.6
25 मार्च, 2026
androidx.compose.runtime:runtime-*:1.10.6 रिलीज़ हो गया है. वर्शन 1.10.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रुकने वाली कंपोज़िशन में "अगर अन्य ग्रुप की वजह से रूट से फिर से इस्तेमाल करने की सुविधा बंद नहीं की जा सकती है" क्रैश की समस्या को ठीक किया गया (I474b5, b/488433633)
- रोकने लायक कंपोज़िशन में, "Apply is called on deactivated node" क्रैश की समस्या ठीक की गई (I880c0, b/484300733)
वर्शन 1.10.5
11 मार्च, 2026
androidx.compose.runtime:runtime-*:1.10.5 रिलीज़ हो गया है. वर्शन 1.10.5 में ये बदलाव शामिल हैं.
वर्शन 1.10.4
25 फ़रवरी, 2026
androidx.compose.runtime:runtime-*:1.10.4 को 1.10.3 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.10.4 में ये बदलाव शामिल हैं.
वर्शन 1.10.3
11 फ़रवरी, 2026
androidx.compose.runtime:runtime-*:1.10.3 रिलीज़ हो गया है. वर्शन 1.10.3 में ये बदलाव शामिल हैं.
वर्शन 1.10.2
28 जनवरी, 2026
androidx.compose.runtime:runtime-*:1.10.2 रिलीज़ हो गया है. वर्शन 1.10.2 में ये बदलाव शामिल हैं.
वर्शन 1.10.1
14 जनवरी, 2026
androidx.compose.runtime:runtime-*:1.10.1 रिलीज़ हो गया है. वर्शन 1.10.1 में ये बदलाव शामिल हैं.
वर्शन 1.10.0
03 दिसंबर, 2025
androidx.compose.runtime:runtime-*:1.10.0 रिलीज़ हो गया है. वर्शन 1.10.0 में ये बदलाव शामिल हैं.
वर्शन 1.10.0-rc01
19 नवंबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-rc01 रिलीज़ हो गया है. वर्शन 1.10.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SnapshotStateObserverमें डिराइव की गई स्थितियों को रिकॉर्ड करते समय, रीएंट्रेंट मॉडिफ़िकेशन से सुरक्षित रखें (I7b862, b/435655844, b/456249373, b/402535073)- [Lint] डिटेक्टर को कंपाउंड असाइनमेंट के बारे में सही तरीके से चेतावनी देने के लिए, मामूली बग ठीक किया गया. (I08319, b/456775556)
वर्शन 1.10.0-beta02
05 नवंबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-beta02 रिलीज़ हो गया है. वर्शन 1.10.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
हमने एपीआई के साथ काम न करने वाले कई बदलाव किए हैं, ताकि
RetainedValuesStoreको इंस्टॉल और मैनेज करना आसान हो सके.retainऔरRetainedEffectके साथ की गई मौजूदा कॉल पर कोई असर नहीं पड़ेगा. हालांकि, किसी भी कस्टमRetainedValuesStoreको इस रिलीज़ के साथ काम करने के लिए, माइग्रेट करना होगा. (If3c2f, b/451921682, b/450539803)RetainedValuesStoreअब डेटा बनाए रखने की सुविधा को शुरू/बंद करने के लिए, लो-लेवल एपीआई उपलब्ध नहीं कराता. अब रखरखाव की स्थिति, कॉन्टेंट के हिसाब से अपने-आप बदल जाती है.LocalRetainedValuesStoreProviderअबRetainedValuesStoreको इंस्टॉल करने का विकल्प देता है.LocalRetainedValuesStoreको सीधे तौर पर नहीं दिया जाना चाहिए. इन बदलावों के बारे में ज़्यादा जानने के लिए, अपडेट किया गया दस्तावेज़ और सैंपल देखें.RetainedValuesStoreProviderका नाम बदलकरRetainedValuesStoreRegistryकर दिया गया है. यह क्लास अब सिर्फ़ कंपोज़िशन मेंRetainedValuesStoreको इंस्टॉल और मैनेज करने के लिए एपीआई उपलब्ध कराती है.ControlledRetainedValuesStoreकी जगहManagedRetainedValuesStoreने ले ली है.RetainedValuesStoreअब एक इंटरफ़ेस है.
पहले, कस्टम RetainedValuesStore इंस्टॉल करने का तरीका कुछ ऐसा दिखता था:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
एपीआई में हुए इन बदलावों के बाद, इस इंस्टॉलेशन को इस कोड से दिखाया जा सकता है:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
गड़बड़ियां ठीक की गईं
- यह कुकी, मूव किए जा सकने वाले कॉन्टेंट के स्कोप के अमान्य होने की जानकारी को ट्रांसफ़र करती है. ऐसा तब होता है, जब कॉन्टेंट को स्लॉट टेबल (I9d123, b/451651649) से बाहर ले जाया जाता है
वर्शन 1.10.0-beta01
22 अक्टूबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-beta01 रिलीज़ हो गया है. वर्शन 1.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
RetainedValuesStore.getExitedValueOrDefaultका नाम बदलकरRetainedValuesStore.getExitedValueOrElseकर दिया गया है (If9653, b/452340613)isKeepingExitedValuesका नाम बदलकरisRetainingExitedValuesकर दिया गया है (I660bf, b/437095756)RetainScopeका नाम बदलकरRetainedValuesStoreकर दिया गया है.RetainScopeHolderका नाम बदलकरRetainedValuesStoreRegistryकर दिया गया है.RetainScopeHolder.RetainScopeProviderका नाम बदलकरRetainedValuesStoreRegistry.ProvideChildRetainedValuesStoreकर दिया गया है. (Idf23a, b/437095756)
गड़बड़ियां ठीक की गईं
SaveableStateRegistryमेंSavedStateको पहली बार इस्तेमाल करने तक, उसे शुरू नहीं किया जाता. (Ic0a93)
वर्शन 1.10.0-alpha05
08 अक्टूबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha05 रिलीज़ हो गया है. वर्शन 1.10.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रिलीज़ मोड में
DiagnosticComposeExceptionके लिए स्टैक ट्रेस भरें. (Ib76cb) - स्नैपशॉट की स्थिति में एक समस्या ठीक की गई है. इसमें किसी टाइप के लिए मर्ज करने की नीति का इस्तेमाल करने पर, पिछली वैल्यू का गलत तरीके से हिसाब लगाया जा सकता था. इससे पिछली वैल्यू के बजाय, स्थिति की आने वाली वैल्यू मिलती थी. ऐसा तब होता है, जब दो से ज़्यादा स्नैपशॉट में बदलाव करने का अनुरोध लंबित हो और लागू की जा रही कम से कम एक वैल्यू के लिए, मर्ज करने की नीति लागू हो. (I527b5, b/442791065)
वर्शन 1.10.0-alpha04
24 सितंबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha04 रिलीज़ हो गया है. वर्शन 1.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
RetainScopeHolderके कलेक्शन को मैनेज करने के लिए,RetainScopeHolderएपीआई जोड़ा गया.RetainScopesइसका इस्तेमाल, उन कंटेनर और नेविगेशन होस्ट के लिए डेटा बनाए रखने की नीति लागू करने के लिए किया जा सकता है जिनमें अलग-अलग डेटा बनाए रखने की अवधि वाले कई चाइल्ड शामिल होते हैं. (I10e0f)RetainedContentHostऔरretainControlledRetainScopeएपीआई जोड़े गए हैं. इनका इस्तेमाल, अपने-आप मैनेज होने वालेRetainScopesबनाने के लिए किया जा सकता है. जैसे, कोलैप्स होने वाले पैन (If81f6) जैसे गायब होने वाले कॉन्टेंट के लिएUpdater#setके इनलाइन ओवरलोड को बंद कर दिया गया है, क्योंकि यह दी गई वैल्यू को कई बार बॉक्स में डाल रहा था.Updater#initका ओवरलोड जोड़ा गया है. यह एक ऐसा पैरामीटर लेता है जिसके लिए कैप्चर करने वाले लैम्डा की ज़रूरत नहीं होती. (Id679e)RetainedEffectको पेश किया गया है. यहDisposableEffectकी तरह ही साइड-इफ़ेक्ट एपीआई है. हालांकि, यह कंपोज़िशन लाइफ़साइकल के बजाय, डेटा बनाए रखने के लाइफ़साइकल को फ़ॉलो करता है. इस एपीआई का इस्तेमाल, किसी ऐसे ऑब्जेक्ट को बनाए रखने से जुड़े इफ़ेक्ट के लिए किया जाता है जोRetainObserverको लागू नहीं करता या लागू नहीं कर सकता. (I1c61f, b/177562901)RetainObserver.onRetainedके दस्तावेज़ में सुधार किया गया है. साथ ही,RetainObserver.onUnusedजोड़ा गया है, जोRememberObserver.onAbandoned(Ia6fc5) को दिखाता है
गड़बड़ियां ठीक की गईं
- फ़ंक्शन (जैसे कि कंपोज़ेबल कॉल) में पहले ग्रुप के बाद और हटाए जा सकने वाले ग्रुप (जैसे कि
ifस्टेटमेंट) से पहले,onForgottenको गलत क्रम में भेजने की समस्या ठीक की गई. (I453f6, b/346821372) LaunchedEffectको शुरू करते समय, को-रूटीन कॉन्टेक्स्ट ट्रैवर्सल से बचें. (I8d2c3b)
वर्शन 1.10.0-alpha03
10 सितंबर, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha03 रिलीज़ हो गया है. वर्शन 1.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- यह ग्रुप की पर आधारित कंपोज़ स्टैक ट्रेस की सुविधा देता है. यह सुविधा, छोटे किए गए ऐप्लिकेशन में काम करती है. इन ट्रेस के लिए proguard मैपिंग, Compose कंपाइलर Gradle प्लगिन जनरेट करेगा. यह सुविधा, Kotlin 2.3.0 से शुरू होगी. ये स्टैक ट्रेस, डिफ़ॉल्ट रूप से बंद होते हैं. इन्हें चालू करने के लिए,
ComposeStackTraceMode.GroupKeysका इस्तेमाल करें. (Ifbcb5) - इंटरफ़ेस जोड़ें: टूलिंग के लिए
IdentifiableRecomposeScope(Idd5e0, b/434194620) CompositionLocalContextवाले कंपोज़िशन में, बिना वजह अमान्य होने की समस्या को ठीक किया गया (I3fa21, b/412750209)
गड़बड़ियां ठीक की गईं
- दस्तावेज़ और टूलिंग में यह साफ़ तौर पर बताया गया है कि जिन कुंजियों को बनाए रखने के लिए पास किया जाता है उन्हें भी बनाए रखा जाता है. उन कुंजियों को पास करने से बचें जिन्हें बनाए रखना है. इससे मेमोरी लीक हो सकती है. (Ib553b, b/177562901)
- जब किसी रोकी गई कंपोज़िशन के
resume()को किसी दूसरी थ्रेड पर कॉल किया जाता है, तो मुख्य थ्रेड के अगले फ़्रेम के लिए, रोकी जा सकने वाली कंपोज़िशन को फिर से कंपोज़ करने की कोशिश करने पर, सूचनाओं की स्थिति में गड़बड़ी हो सकती है. इस समस्या को ठीक कर दिया गया है. (Ie5f17, b/442649894) - कंपोज़िशन में कैप्चर किए गए अपवादों को लॉग करें. (I47d78, b/432799675, b/436878515, b/359623674, b/400436355)
वर्शन 1.10.0-alpha02
27 अगस्त, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha02 रिलीज़ हो गया है. वर्शन 1.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@DoNotRetainजोड़ा गया है. इसका इस्तेमाल उन टाइप को एनोटेट करने के लिए किया जा सकता है जिन्हेंretainएपीआई के साथ इस्तेमाल नहीं किया जाना चाहिए. ऐसा इसलिए किया जा सकता है, क्योंकि वे रिसॉर्स लीक कर देंगे. (Ie5435)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट का इस्तेमाल करने के लिए, KGP 2.0.0 या इसके बाद के वर्शन की ज़रूरत होती है. (Idb6b5)
गड़बड़ियां ठीक की गईं
- कॉम्पोज़िशन के रूट नोड में बदलाव करने पर, ऐप्लिकेशन के लिए सही तरीके से कार्रवाइयां करने के लिए, मूव किए जा सकने वाले कॉन्टेंट को ठीक किया गया. हिलाए जा सकने वाले कॉन्टेंट में बदलावों का हिसाब लगाते समय,
up()कॉल को लंबित रखा जा सकता है और लागू करने वाले को भेजा नहीं जा सकता. इससे लागू करने वाले की स्थिति, बाद में इस्तेमाल करने के लिए गलत तरीके से सेट हो जाती है. (I7c583), (I47b70) CheckResultको डेप्रिकेट के तौर पर मार्क करता है, क्योंकि इसका इस्तेमाल नहीं किया जाना चाहिए. (I32934)
वर्शन 1.10.0-alpha01
13 अगस्त, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha01 रिलीज़ हो गया है. वर्शन 1.10.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इसमें उपयोगकर्ता बनाए रखने से जुड़ा एपीआई शामिल किया गया है.
rememberSaveableकी तरह, retain भी याद रखी गई वैल्यू को सेव कर सकता है. ये वैल्यू, कंपोज़िशन हैरारकी से बाहर निकल जाती हैं. बनाए रखी गई वैल्यू को क्रम से नहीं लगाया जाता. साथ ही, ये सेव की गई वैल्यू से कम समय तक उपलब्ध रहती हैं. ये androidxViewModelकी तरह काम करती हैं. ज़्यादा जानकारी के लिए, दस्तावेज़ देखें. (Ia3105, b/177562901) awaitOrScheduleNextCompositionEnd()एपीआई जोड़ा गया है. यह एपीआई, Recomposer के मौजूदा फ़्रेम को कंपोज़ करने के बाद कॉलबैक जारी करता है. अगर Recomposer फ़िलहाल कोई फ़्रेम कंपोज़ नहीं कर रहा है, तो यह एपीआई तब तक निलंबित रहता है, जब तक अगले फ़्रेम की कंपोज़िशन पूरी नहीं हो जाती. इसके बाद, यह कंपोज़ किए जाने वाले नए फ़्रेम को शेड्यूल करता है. (Ib873c)- यूनिट के हिसाब से कीमत तय न करने वाले, कंपोज़िशन लोकल प्रोवाइडर एपीआई (I22521, b/271871288) को जोड़ा गया
- एक फ़ीचर फ़्लैग,
isMovableContentUsageTrackingEnabled, जोड़ा गया है. इससे, मूव किए जा सकने वाले कॉन्टेंट के इस्तेमाल को ट्रैक किया जा सकता है. इससे, कॉन्टेंट बनाते समय कुछ ओवरहेड से बचा जा सकता है. फ़िलहाल, यह सुविधा डिफ़ॉल्ट रूप से बंद है. (Ia713d)
गड़बड़ियां ठीक की गईं
- इस कुकी का इस्तेमाल, एक से दूसरी सबकंपोज़िशन के बीच ले जाए जाने वाले कॉन्टेंट में क्रैश की समस्या को ठीक करने के लिए किया जाता है. (I3fa1e, b/436858107)
- इस वर्शन में, एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी तब होती थी, जब कई नेस्ट की गई सबकंपोज़िशन के अंदर कंपोज़ेबल स्टैक ट्रेस का कुछ हिस्सा मौजूद नहीं होता था. (I98c6f)
- डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
- ऐसी रेस कंडीशन को ठीक किया गया है जिसमें रोके जा सकने वाले कंपोज़िशन की इंटरनल स्थिति को कई थ्रेड से अपडेट किया जा रहा था. (I03895)
- यह कंपोज़िशन रजिस्ट्रेशन ऑब्ज़र्वर को अपडेट करता है, ताकि इसे शुरुआती कंपोज़िशन से पहले कॉल किया जा सके. (I4adca, b/430600932)
AutoboxingStateValuePropertyDetectorको K1 और K2, दोनों के साथ काम करने के लिए, मामूली गड़बड़ी ठीक की गई. (Ie81c1)
बाहरी योगदान
- runtime-rxjava2 आर्टफ़ैक्ट को मल्टीप्लैटफ़ॉर्म बनाएं और JVM को इस्तेमाल किए जा सकने वाले टारगेट के तौर पर जोड़ें. (I5409e)
- runtime-rxjava3 आर्टफ़ैक्ट को मल्टीप्लैटफ़ॉर्म बनाएं और JVM को इस्तेमाल किए जा सकने वाले टारगेट के तौर पर जोड़ें. (I97e84)
वर्शन 1.9
वर्शन 1.9.5
19 नवंबर, 2025
androidx.compose.runtime:runtime-*:1.9.5 रिलीज़ हो गया है. वर्शन 1.9.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- यह कुकी, मूव किए जा सकने वाले कॉन्टेंट के स्कोप के अमान्य होने की जानकारी को ट्रांसफ़र करती है. ऐसा तब किया जाता है, जब कॉन्टेंट को स्लॉट टेबल (I9d123, b/451651649) से बाहर ले जाया जाता है
वर्शन 1.9.4
22 अक्टूबर, 2025
androidx.compose.runtime:runtime-*:1.9.4 रिलीज़ हो गया है. वर्शन 1.9.4 में ये बदलाव शामिल हैं.
वर्शन 1.9.3
08 अक्टूबर, 2025
androidx.compose.runtime:runtime-*:1.9.3 रिलीज़ हो गया है. वर्शन 1.9.3 में ये बदलाव शामिल हैं.
वर्शन 1.9.2
24 सितंबर, 2025
androidx.compose.runtime:runtime-*:1.9.2 रिलीज़ हो गया है. वर्शन 1.9.2 में ये बदलाव शामिल हैं.
वर्शन 1.9.1
10 सितंबर, 2025
androidx.compose.runtime:runtime-*:1.9.1 रिलीज़ हो गया है. वर्शन 1.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसे कंपोज़िशन को दोबारा कंपोज़ करने से बचें जो कंपोज़ होने की प्रोसेस में हैं. (Iacb01)
- रीकंपोज़ स्कोप को दो बार रोके जाने से रोकें. (I060b2, b/431584881)
वर्शन 1.9.0
13 अगस्त, 2025
androidx.compose.runtime:runtime-*:1.9.0 रिलीज़ हो गया है. वर्शन 1.9.0 में ये बदलाव शामिल हैं.
1.8.0 के बाद हुए ज़रूरी बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन होना ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो gradle.properties में
android.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अलग से अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है. - नई runtime-annotation लाइब्रेरी बनाई गई है. इसमें Compose रनटाइम पर निर्भर न रहने वाली एनोटेशन परिभाषाएं शामिल हैं. इसलिए, इसका इस्तेमाल नॉन-कंपोज़ मॉड्यूल से किया जा सकता है.
@Stable,@Immutable, और@StableMarkerको रनटाइम-एनोटेशन में ले जाया गया है, ताकि नॉन-कंपोज़ मॉड्यूल को एनोटेट किया जा सके@FrequentlyChangingValueऔर@RememberInCompositionको runtime-annotation में जोड़ दिया गया है.@FrequentlyChangingValueउन एलान को मार्क करता है जिनकी वजह से बार-बार रीकंपोज़िशन हो सकती है. वहीं,@RememberInCompositionउन एलान को मार्क करता है जिन्हें कंपोज़िशन में याद रखना चाहिए. लिंट चेक से जुड़ी चेतावनियों में, गलत इस्तेमाल के बारे में बताया जाता है.
वर्शन 1.9.0-rc01
30 जुलाई, 2025
androidx.compose.runtime:runtime-*:1.9.0-rc01 रिलीज़ हो गया है. वर्शन 1.9.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- यह कंपोज़िशन रजिस्ट्रेशन ऑब्ज़र्वर को अपडेट करता है, ताकि इसे शुरुआती कंपोज़िशन से पहले कॉल किया जा सके. (I4adca, b/430600932)
वर्शन 1.9.0-beta03
16 जुलाई, 2025
androidx.compose.runtime:runtime-*:1.9.0-beta03 रिलीज़ हो गया है. वर्शन 1.9.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.9.0-beta02
2 जुलाई, 2025
androidx.compose.runtime:runtime-*:1.9.0-beta02 रिलीज़ हो गया है. वर्शन 1.9.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कंपोज़िशन के बीच, स्लॉट टेबल में मौजूद वैल्यू के रेफ़रंस लाइफ़टाइम को कम किया गया. ऐसे मामले सामने आए हैं जिनमें स्लॉट टेबल में मौजूद रेफ़रंस, ज़रूरत से ज़्यादा समय तक फ़्रेम में दिखता है. (I49e74, b/418516940)
- हॉट रिलोड के तरीकों के लिए, Kotlin मैंगल को हटाएं. (Ic56a3, b/426871325)
वर्शन 1.9.0-beta01
18 जून, 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01 रिलीज़ हो गया है. वर्शन 1.9.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose कंपाइलर से जोड़ी गई सोर्स जानकारी को पार्स करने के लिए, टूलिंग एपीआई जोड़ा गया. (Iceaf9, b/408492167)
SnapshotStateSetअब Android परParcelableलागू करता है. अब इसेrememberSaveable { ... }के तौर पर इस्तेमाल किया जा सकता है. (I755dd, b/378623803)SnapshotStateListअब Android परParcelableलागू करता है. अब इसेrememberSaveable { ... }के तौर पर इस्तेमाल किया जा सकता है. (Id18be, b/378623803)movableContentOf()को अब@RememberInCompositionएनोटेशन के साथ मार्क किया गया है. इससे लिंट को गलत इस्तेमाल (I2738d) का पता लगाने में मदद मिलती है- कंपोज़िशन ऑब्ज़र्वर के एक्सपेरिमेंटल एपीआई को अपडेट किया गया है, ताकि रीकंपोज़िशन के कारणों को ज़्यादा बेहतर तरीके से समझा जा सके (I32b6a)
- इस सुविधा के आने वाले समय में होने वाले डेवलपमेंट को ध्यान में रखते हुए,
setDiagnosticStackTraceEnabledको एक्सपेरिमेंटल में बदलें. (I11db3) currentCompositeKeyHashका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,currentCompositeKeyHashCodeका इस्तेमाल करें. बदलाव करने वाला एपीआई, एक ही हैश को ज़्यादा बिट के साथ एन्कोड करता है. इससे कंपोज़िशन हैरारकी में मौजूद दो रैंडम ग्रुप के लिए, एक जैसी हैश कुंजी होने की संभावना काफ़ी कम हो जाती है. (I4cb6a, b/177562901)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट का इस्तेमाल करने के लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है (Idb6b5)
@Stable,@Immutable, और@StableMarkerको रनटाइम-एनोटेशन में ले जाया गया है. अगर आपको कंपोज़ पर निर्भर न रहने वाली लाइब्रेरी से इन एनोटेशन का इस्तेमाल करना है, तो अब रनटाइम-एनोटेशन का इस्तेमाल किया जा सकता है. (I23a16)rememberSaveableओवरलोड का नाम बदलकरrememberSerializableकर दिया गया है. यहKSerializerको स्वीकार करता है. इस बदलाव से,kotlinx.serializationके साथ इसके इस्तेमाल के बारे में ज़्यादा जानकारी मिलती है.rememberSaveableमें सीधे तौर पर सामान्यkotlinx.Serializableक्लास इस्तेमाल करने के लिए,reifiedटाइप पैरामीटर की ज़रूरत होगी. इससे सोर्स कंपैटिबिलिटी टूट जाएगी, क्योंकि सभी कॉल साइट को कंपाइल टाइम पर रीफ़ाइड टाइप की जानकारी देनी होगी. (Idb875, I38627, b/376028110)
गड़बड़ियां ठीक की गईं
- ऐसे कंपोज़िशन को हटाना होगा जिनमें रोके जा सकने वाले कॉन्टेंट का इस्तेमाल किया गया था और उन्हें रद्द कर दिया गया था. अब इसकी जांच कंपोज़िशन करती है. अगर इसे फिर से इस्तेमाल किया जाता है, तो यह गड़बड़ी दिखाएगा. (I2daa5, b/406792785)
- रोकने लायक कंपोज़िशन की सुविधा से जुड़ी समस्या को ठीक किया गया है. अब इस सुविधा के बंद होने पर, पर्यवेक्षकों को नकली
onForgottenनहीं भेजा जाएगा. रुकने वाली जिस कंपोज़िशन को रद्द कर दिया गया है उसमें मौजूदRememberObserversको सिर्फ़ onAbandoned भेजा जाना चाहिए. (I26f54) - हमने मूव किए जा सकने वाले कॉन्टेंट से जुड़ी समस्या को ठीक कर दिया है. इस समस्या में, मूव किए जा सकने वाले कॉन्टेंट को प्रोसेस करने के आखिरी चरणों में पहुंचने के बाद, अमान्यताओं को कंपोज़र में जोड़ा जाता था. हालांकि, कॉन्टेंट को मूव करने पर इन अमान्यताओं को अपडेट नहीं किया जाता था. इस वजह से, कॉन्टेंट को गलत जगह पर फिर से कंपोज़ किया जाता था. (Icd2fa, b/409439507)
- कॉन्टेंट को एक जगह से दूसरी जगह ले जाने से पहले, उसे कंपोज़ करने के बाद अमान्य कर दिए जाने की समस्या को ठीक किया गया है. (I99eac, b/229001114)
previous()को कॉल करने के बाद,SnapshotStateListसे बनाए गए सूची के इटरेटर केremove()को कॉल करने पर, सूची से गलत एलिमेंट हटाया जा सकता है. साथ ही, यहArrayListके कॉल के एक ही क्रम के लिए,ArrayListके काम करने के तरीके से मेल नहीं खाता. (I05ab7, b/417493222)onForgottonभेजने के क्रम से जुड़ी समस्या को ठीक किया गया है. उदाहरण के लिए, इसकी वजह से डिस्पोज़ेबल इफ़ेक्ट गलत क्रम में लागू हो सकते थे.onDispose(Ic1c91, b/417450712)- पाउज़ की जा सकने वाली कंपोज़िशन में, स्टेट हैंडलिंग का फिर से इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है (Ife96e, b/404058957)
- जब किसी कंपोज़िशन को रोका गया और फिर से शुरू किया गया, तब कंपोज़िशन को फिर से इस्तेमाल करने की स्थिति को ठीक किया गया. ऐसा इसलिए किया गया, क्योंकि कंपोज़िशन के रुकने के दौरान, कंपोज़िशन के कुछ हिस्सों में बदलाव हुआ था. (I441d1, b/416209738)
- हमने b/404058957 समस्या को ठीक करने के लिए, रोके जा सकने वाले कंपोज़िशन को याद रखने और उसे भेजने की सुविधा को ठीक कर दिया है. इससे पहले, इस समस्या को पूरी तरह से ठीक नहीं किया गया था. (I1afd4, b/404058957)
OffsetApplierअबapply()को सही तरीके से बदलता है.apply()को पॉज़ की जा सकने वाली कंपोज़िशन के साथ पेश किया गया था. ऐसा न होने पर, वर्चुअल नोड अपडेट करते समय, रोकी जा सकने वाली कंपोज़िशन में अपवाद हो सकता है. (Idbf31, b/409291131)- हमने एक ऐसी समस्या को ठीक किया है जिसकी वजह से, निलंबित किए गए
FrameClock.withFrameNanosकॉल को रद्द करने पर, Molecule के उपयोगकर्ताओं पर असर पड़ सकता था. ऐसा तब होता था, जब फ़्रेम भेजा जा रहा हो. (I89cab, b/407027032) - हिलाए जा सकने वाले कॉन्टेंट की वजह से, Recomposer कुछ समय के लिए काम करना बंद कर सकता है (Ie5416, b/409267170)
- कंपोज़िशन को रोकने की सुविधा के दौरान,
onReuseऔरonDeactivateकी जगह आपस में बदल सकती है. अब यह पक्का हो गया है कि ये इवेंट,onDeactivate/onReuseके क्रम में ही ट्रिगर होंगे. (I996e4, b/404058957) - pausable कंपोज़िशन में remember observers को डिसपैच करने की समस्या ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए observers को डिसपैच करने से बचा जा सके (I570b2, b/404645679, b/407931790)
- Compose Multiplatform में
LifecycleRegistryको असुरक्षित मोड पर स्विच किया गया, ताकिMainThreadकी जांच बंद की जा सके और थ्रेडिंग से जुड़ी समस्याओं को ठीक किया जा सके. ज़्यादा जानकारी के लिए, CMP-8227 देखें. (Icee87)
बाहरी योगदान
- Molecule का इस्तेमाल करने वाले लोगों के लिए, एक गड़बड़ी को ठीक किया गया है. इसमें
RecompositionMode.Immediateका इस्तेमाल करने पर, रीकंपोज़िशन छूट सकती हैं. (I9f3a9, b/419527812) PausableCompositionisAppliedऔरisCancelledगेटर दिखाए गए हैं. इनकी मदद से,PausableCompositionकी स्थिति की जांच की जा सकती है. (I994aa)FunctionKeyMetaएनोटेशन मेंAnnotationTarget.FUNCTIONजोड़ा गया. (I08021)
वर्शन 1.9.0-alpha04
4 जून, 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha04 रिलीज़ हो गया है. वर्शन 1.9.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SnapshotStateSetअब Android पर Parcelable लागू करता है. अब इसका इस्तेमालrememberSaveable { ... }के हिस्से के तौर पर किया जा सकता है. (I755dd, b/378623803)SnapshotStateListअब Android पर Parcelable लागू करता है. अब इसका इस्तेमालrememberSaveable { ... }के हिस्से के तौर पर किया जा सकता है. (Id18be, b/378623803)movableContentOf()को अब@RememberInCompositionएनोटेशन के साथ मार्क किया गया है. इससे लिंट को गलत इस्तेमाल (I2738d) का पता लगाने में मदद मिलती है- कंपोज़िशन ऑब्ज़र्वर के एक्सपेरिमेंटल एपीआई को अपडेट किया गया है, ताकि रीकंपोज़िशन के कारणों को ज़्यादा बेहतर तरीके से समझा जा सके (I32b6a)
गड़बड़ियां ठीक की गईं
onForgottonभेजने के क्रम से जुड़ी समस्या को ठीक किया गया है. उदाहरण के लिए, इसकी वजह से डिस्पोज़ेबल इफ़ेक्ट गलत क्रम में लागू हो सकते थे.onDispose(Ic1c91, b/417450712)- पाउज़ की जा सकने वाली कंपोज़िशन में, स्टेट हैंडलिंग का फिर से इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है (Ife96e, b/404058957)
- बग को ठीक किया गया है, ताकि K1 और K2, दोनों के लिए बदलाव की जा सकने वाली कलेक्शन की पहचान करने की सुविधा काम कर सके (Ie4878)
- ओवरराइड किए गए प्रॉपर्टी ऐक्सेसर पर एनोटेशन लुकअप को K1 और K2 (I9900d), दोनों के साथ काम करने लायक बनाने के लिए, मामूली गड़बड़ी को ठीक किया गया है
बाहरी योगदान
- Molecule का इस्तेमाल करने वाले लोगों के लिए, एक गड़बड़ी को ठीक किया गया है. इसमें
RecompositionMode.Immediateका इस्तेमाल करने पर, रीकंपोज़िशन छूट सकती हैं. (I9f3a9, b/419527812) - इसमें
PausableCompositionisApplied औरisCancelledगेटर शामिल हैं. इनकी मदद से,PausableCompositionकी स्थिति की जांच की जा सकती है. (I994aa)
वर्शन 1.9.0-alpha03
20 मई, 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha03 रिलीज़ हो गया है. वर्शन 1.9.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस सुविधा के आने वाले समय में होने वाले डेवलपमेंट को ध्यान में रखते हुए,
setDiagnosticStackTraceEnabledको एक्सपेरिमेंटल में बदलें. (I11db3)
गड़बड़ियां ठीक की गईं
- जब किसी कंपोज़िशन को रोका गया और फिर से शुरू किया गया, तब कंपोज़िशन को फिर से इस्तेमाल करने की स्थिति को ठीक किया गया. ऐसा इसलिए किया गया, क्योंकि कंपोज़िशन के रुकने के दौरान, कंपोज़िशन के कुछ हिस्सों में बदलाव हुआ था. (I441d1, b/416209738)
- b/404058957 समस्या के लिए, रोके जा सकने वाले कंपोज़िशन के लिए, डिसपैच फ़िक्स को याद रखने की सुविधा को पूरा किया गया. पिछला फ़िक्स अधूरा था. (I1afd4, b/404058957)
SaveableStateHolder.SaveableStateProviderअब कंपोज़िशन के ज़रिए अपने कॉन्टेंट कोLocalSavedStateRegistryOwnerउपलब्ध कराता है. (Ia2761, b/413108878)androidx.compose.runtime.saveableअबandroidx.lifecycle.runtime.composeपर निर्भर करता है. (I53228, b/413108878)
वर्शन 1.9.0-alpha02
7 मई, 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha02 रिलीज़ हो गया है. वर्शन 1.9.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कस्टम 'key' के साथ
rememberSaveableको बंद कर दिया गया है. यह पोज़िशनल स्कोपिंग को बायपास करता है.इससे स्टेट बग और गड़बड़ियां होती हैं. जैसे, अनजाने में स्टेट शेयर करना या खो जाना, नेस्ट किए गएLazyLayoutsमें समस्याएं आना. कृपया 'key' पैरामीटर हटाएं, ताकि लगातार और स्थानीय तौर पर स्कोप की गई स्थिति के लिए पोज़िशनल स्कोपिंग का इस्तेमाल किया जा सके. ज़्यादा जानकारी के लिए, पूरा कमिट मैसेज देखें. (I5e6ff, b/357685851)
गड़बड़ियां ठीक की गईं
OffsetApplierअबapply()को सही तरीके से बदलता है.apply()को पॉज़ की जा सकने वाली कंपोज़िशन के साथ पेश किया गया था. ऐसा न होने पर, वर्चुअल नोड अपडेट करते समय, रोके जा सकने वाले कंपोज़िशन में अपवाद हो सकता है. (Idbf31, b/409291131)- हमने एक ऐसी समस्या को ठीक किया है जिसकी वजह से, निलंबित किए गए
FrameClock.withFrameNanosकॉल को रद्द करने पर, Molecule के उपयोगकर्ताओं पर असर पड़ सकता था. ऐसा तब होता था, जब फ़्रेम भेजा जा रहा हो. (I89cab, b/407027032) - ऐसा हो सकता है कि मूव किए जा सकने वाले कॉन्टेंट को खारिज करने की स्थिति अब भी लंबित हो और Recomposer निष्क्रिय हो जाए. आम तौर पर, ऐसा नहीं होता है, क्योंकि Recomposer के मुख्य लूप में, मूव किए जा सकने वाले कॉन्टेंट की स्थिति को खारिज कर दिया जाता है. हालांकि, ऐसा रोके जा सकने वाले कंपोज़िशन में तब हो सकता है, जब
resume()(Ie5416, b/409267170) के दौरान, मूव किए जा सकने वाले कॉन्टेंट को खारिज कर दिया जाता है - कंपोज़िशन को रोकने की सुविधा के दौरान,
onReuseऔरonDeactivateकी जगह आपस में बदल सकती है. अब यह गारंटी दी जाती है कि येonDeactivate/onReuseके क्रम में ही दिखेंगे. (I996e4, b/404058957)
वर्शन 1.9.0-alpha01
23 अप्रैल, 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha01 रिलीज़ हो गया है. वर्शन 1.9.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- Compose के साथ शिप किए गए Lint चेक के लिए, अब AGP का कम से कम 8.8.2 वर्शन होना ज़रूरी है. अगर AGP को अपग्रेड नहीं किया जा सकता, तो
gradle.propertiesमेंandroid.experimental.lint.version=8.8.2(या नया वर्शन) का इस्तेमाल करके, Lint को अपग्रेड किया जा सकता है. आईडीई में Compose के लिंट चेक चलाने के लिए, Android Studio Ladybug या इसके बाद का वर्शन ज़रूरी है.
एपीआई में हुए बदलाव
currentCompositeKeyHashका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,currentCompositeKeyHashCodeका इस्तेमाल करें. बदलाव करने वाला एपीआई, एक ही हैश को ज़्यादा बिट के साथ एन्कोड करता है. इससे कंपोज़िशन हैरारकी में मौजूद दो रैंडम ग्रुप के लिए, एक जैसी हैश कुंजी होने की संभावना काफ़ी कम हो जाती है. (I4cb6a, b/177562901)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट का इस्तेमाल करने के लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है (Idb6b5)
@Stable,@Immutable, और@StableMarkerको रनटाइम-एनोटेशन में ले जाया गया है. अगर आपको कंपोज़ पर निर्भर न रहने वाली लाइब्रेरी से इन एनोटेशन का इस्तेमाल करना है, तो अब रनटाइम-एनोटेशन का इस्तेमाल किया जा सकता है. (I23a16)onCreatingऔरonDisposingको हटाता है, क्योंकि इन्हें बंद कर दिया गया है और इनका नाम बदलकरonPreCreateऔरonPreDisposeकर दिया गया है. इससे नाम बदलने की प्रोसेस पूरी हो जाती है. (I97461)- एक कंपोज़िशन लोकल को दिखाता है, जो कंपोज़िशन में कंपोज़ नोड की जगह के आधार पर कंपोज़ स्टैक ट्रेस अटैच करने की अनुमति देता है. (Ie0bda, b/354163858)
- कंपोज़िशन में सेव की गई सोर्स जानकारी के आधार पर, गड़बड़ी की जानकारी देने वाले कंपोज़ स्टैक ट्रेस की सुविधा जोड़ी गई है. (I3db9f, b/354163858)
runWithTimingDisabledको बंद करकेrunWithMeasurementDisabledका इस्तेमाल करें. इससे यह पता चलता है कि सभी मेट्रिक को रोक दिया गया है. इसके अलावा,MicrobenchmarkScopeसुपरक्लास को दिखाएं, क्योंकिrunWithMeasurementDisabledफ़ंक्शन को फिर से एलान करके ऐक्सेस नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि यह इनलाइन है. (I9e23b, b/389149423, b/149979716)@FrequentlyChangingValueजोड़ा गया: यह एक एनोटेशन है. इसका इस्तेमाल फ़ंक्शन और प्रॉपर्टी गेटर को मार्क करने के लिए किया जा सकता है. इससे यह पता चलता है कि उन्हें कंपोज़िशन के अंदर सीधे तौर पर कॉल नहीं किया जाना चाहिए, क्योंकि इससे बार-बार रीकंपोज़िशन हो सकता है. उदाहरण के लिए, स्क्रोल की पोज़िशन की वैल्यू और ऐनिमेशन की वैल्यू को मार्क करने के लिए. चेतावनी, मिलते-जुलते लिंट चेक से मिलती है. (I83630, b/234042500)@RememberInCompositionजोड़ता है: यह एक एनोटेशन है. इसका इस्तेमाल कंस्ट्रक्टर, फ़ंक्शन, और प्रॉपर्टी गेटर को मार्क करने के लिए किया जा सकता है. इससे यह पता चलता है कि कंपोज़िशन के अंदर, इन्हें सीधे तौर पर कॉल नहीं किया जाना चाहिए. गड़बड़ियों की जानकारी, इससे जुड़े लिंट चेक से मिलेगी. इस एनोटेशन का इस्तेमाल, ऐसे एलान को मार्क करने के लिए किया जा सकता है जो स्टेटफ़ुल / बदलने वाले ऑब्जेक्ट, ऐसे ऑब्जेक्ट जिनकी पहचान को कंपोज़िशन के दौरान बनाए रखना ज़रूरी है या ऐसे ऑब्जेक्ट जिन्हें इंस्टैंशिएट करना महंगा है और जिन्हें कंपोज़िशन के दौरान कैश मेमोरी में सेव किया जाना चाहिए. (Ie7db0)- KotlinX Serialization का इस्तेमाल करके, टाइप-सेफ़ स्टेट परसिस्टेंस के लिए
KSerializerके साथ काम करने वाला नयाrememberSaveableओवरलोड जोड़ा गया.Saverपर आधारित मौजूदा एपीआई काम करता रहेगा. (Iea4ab, b/376028110)
गड़बड़ियां ठीक की गईं
- pausable कंपोज़िशन में remember observers को डिसपैच करने की समस्या ठीक की गई है, ताकि एक ही apply में याद रखे गए/भूल गए observers को डिसपैच करने से बचा जा सके (I570b2, b/404645679, b/407931790)
- एपीआई के दिशा-निर्देशों के मुताबिक, onCreating के
SnapshotObserverतरीकों का नाम बदलकरonPreCreateऔरonDisposingका नाम बदलकरonPreDisposeकर दिया गया है. पिछले तरीकों को बंद कर दिया गया है. नए तरीके डिफ़ॉल्ट रूप से पुराने तरीकों को कॉल करते हैं, इसलिए इस इंटरफ़ेस के मौजूदा तरीके तब तक काम करते रहेंगे, जब तक तरीकों को हटा नहीं दिया जाता. इन तरीकों को 1.9.0 ऐल्फ़ा वर्शन में हटा दिया जाएगा. इसके लिए, एक सीएल बनाया गया है, जो जल्द ही उपलब्ध होगा. इन्हें 1.8 स्टेबल वर्शन से पहले, 1.8 बीटा वर्शन से हटा दिया जाएगा. (I6d753) - हमने उस समस्या को ठीक कर दिया है जिसमें किसी ऐसे ग्रुप को फिर से कंपोज़ करते समय, सेव की गई वैल्यू को गलत तरीके से मिटा दिया जाता था और फिर से कैलकुलेट किया जाता था जिसे मूव किए जा सकने वाले ग्रुप के बाद दिखाया जाता था (I62cab, b/383769314)
LaunchedEffectऔरrememberCoroutineScopeमें कंपोज़ स्टैक ट्रेस के लिए सहायता जोड़ी गई (I705c0, b/354163858)- Compose lint checks के लिए, अब कमांड लाइन से कम से कम AGP 8.8.2 वर्शन की ज़रूरत होती है. साथ ही, IDE के साथ काम करने के लिए, कम से कम Android Studio Ladybug की ज़रूरत होती है. अगर AGP के पुराने वर्शन का इस्तेमाल किया जा रहा है, तो Lint के वर्शन को अपग्रेड करने के लिए, gradle.properties में
android.experimental.lint.version=8.8.2सेट किया जा सकता है. इससे AGP पर कोई असर नहीं पड़ेगा. (I6f2a8)
बाहरी योगदान
FunctionKeyMetaएनोटेशन मेंAnnotationTarget.FUNCTIONजोड़ा गया. (I08021)
वर्शन 1.8
वर्शन 1.8.3
18 जून, 2025
androidx.compose.runtime:runtime-*:1.8.3 रिलीज़ हो गया है. वर्शन 1.8.3 में ये बदलाव शामिल हैं.
वर्शन 1.8.2
20 मई, 2025
androidx.compose.runtime:runtime-*:1.8.2 रिलीज़ हो गया है. वर्शन 1.8.2 में ये बदलाव शामिल हैं.
वर्शन 1.8.1
7 मई, 2025
androidx.compose.runtime:runtime-*:1.8.1 रिलीज़ हो गया है. वर्शन 1.8.1 में ये बदलाव शामिल हैं.
वर्शन 1.8.0
23 अप्रैल, 2025
androidx.compose.runtime:runtime-*:1.8.0 रिलीज़ हो गया है. वर्शन 1.8.0 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc03
9 अप्रैल, 2025
androidx.compose.runtime:runtime-*:1.8.0-rc03 रिलीज़ हो गया है. वर्शन 1.8.0-rc03 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc02
26 मार्च, 2025
androidx.compose.runtime:runtime-*:1.8.0-rc02 रिलीज़ हो गया है. वर्शन 1.8.0-rc02 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-rc01
12 मार्च, 2025
androidx.compose.runtime:runtime-*:1.8.0-rc01 रिलीज़ हो गया है. वर्शन 1.8.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एपीआई के दिशा-निर्देशों के मुताबिक, onCreating के
SnapshotObserverतरीकों का नाम बदलकरonPreCreateऔरonDisposingका नाम बदलकरonPreDisposeकर दिया गया है. पिछले तरीकों को बंद कर दिया गया है. नए तरीके डिफ़ॉल्ट रूप से पुराने तरीकों को कॉल करते हैं, इसलिए इस इंटरफ़ेस के मौजूदा तरीके तब तक काम करते रहेंगे, जब तक तरीकों को हटा नहीं दिया जाता. इन तरीकों को 1.9.0 ऐल्फ़ा वर्शन में हटा दिया जाएगा. इसके लिए, एक सीएल बनाया गया है, जो जल्द ही उपलब्ध होगा. इन्हें 1.8 स्टेबल वर्शन से पहले, 1.8 बीटा वर्शन से हटा दिया जाएगा. (I6d753)
वर्शन 1.8.0-beta03
26 फ़रवरी, 2025
androidx.compose.runtime:runtime-*:1.8.0-beta03 रिलीज़ हो गया है. वर्शन 1.8.0-beta03 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-beta02
12 फ़रवरी, 2025
androidx.compose.runtime:runtime-*:1.8.0-beta02 रिलीज़ हो गया है. वर्शन 1.8.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रोके जा सकने वाले कंपोज़िशन में, पकड़े गए अपवाद को फिर से थ्रो करें .(384486d)
वर्शन 1.8.0-beta01
29 जनवरी, 2025
androidx.compose.runtime:runtime-*:1.8.0-beta01 रिलीज़ हो गया है. वर्शन 1.8.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इस अपडेट में, कंपोज़िशन के दौरान Exception से एक्सटेंड न होने वाले थ्रोएबल को बढ़ाने की समस्या को ठीक किया गया है. इससे 'Pending composition has not been applied' गड़बड़ी हो सकती है. (I356be, b/382094412)
वर्शन 1.8.0-alpha08
15 जनवरी, 2025
androidx.compose.runtime:runtime-*:1.8.0-alpha08 रिलीज़ हो गया है. वर्शन 1.8.0-alpha08 में ये बदलाव शामिल हैं.
वर्शन 1.8.0-alpha07
11 दिसंबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha07 रिलीज़ हो गया है. वर्शन 1.8.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- टूलिंग एपीआई जोड़ा गया है. इससे लेआउट इंस्पेक्टर को उन मामलों में सबकंपोज़िशन को पैरंट कंपोज़िशन से जोड़ने में मदद मिलती है जहां कंपोज़िशन को एक साथ जोड़ने के लिए नोड का इस्तेमाल नहीं किया जाता है. (I4ce3d)
SnapshotIdके लिए अंकगणित और खास स्थिरांकों को सार्वजनिक के बजाय, आंतरिक बना दिया गया है. अगर ज़रूरी हो, तोSnasphotIdपर अंकगणित की कार्रवाई की जा सकती है. इसके लिए, इसेIntयाLongमें बदला जा सकता है. ऐसा करने के लिए,toInt()याtoLong()का इस्तेमाल करें. (Ic3a57)
बाहरी योगदान
movableContentOfपैरामीटर के लिए स्टोरेज को ऑप्टिमाइज़ करें. (ed87177)
वर्शन 1.8.0-alpha06
13 नवंबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06 रिलीज़ हो गया है. वर्शन 1.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PausableCompositionAPI में बदलाव. ये 1.8.0-alpha की पिछली रिलीज़ (1.8.0-alpha02 से) के मुकाबले बड़े बदलाव हैं. हालांकि, 1.8.0 में ये नए एपीआई हैं. इसलिए, पुराने सिस्टम के साथ काम करने की सुविधा उपलब्ध नहीं है, क्योंकि एपीआई अब भी ऐल्फ़ा वर्शन में हैं. (I39819)- यह टूलिंग एपीआई जोड़ता है, ताकि Recomposer (Iaeb7e) में नई कंपोज़िशन बनाने की प्रोसेस को मॉनिटर किया जा सके
snapshotIdकोSnapshotमें जोड़ा गया. यहLongटाइप का है. साथ ही,idको बंद कर दिया गया है. स्नैपशॉट के आईडी कोIntसे बदलकरLongकर दिया गया है, ताकि बहुत ज़्यादा फ़्रेम रेट और लंबे समय तक चलने वाले ऐनिमेशन वाले सिस्टम पर स्नैपशॉट आईडी ओवरफ़्लो न हो. इस टाइप को expect/actual बनाया गया है, ताकि जिन प्लैटफ़ॉर्म पर नेटिवLongटाइप नहीं है वहां इस टाइप कोIntया अन्य टाइप के तौर पर इस्तेमाल किया जा सके. जिन प्लैटफ़ॉर्म में नेटिवLongनहीं होता है, जैसे कि JavaScript, उन्हें ज़्यादा फ़्रेम रेट (1000 से ज़्यादा एफ़पीएस) से बचना चाहिए. इससेIntहर 24 दिनों में ओवरफ़्लो हो जाएगा. (I38ac3, b/374821679)
गड़बड़ियां ठीक की गईं
- किसी एक
providesके लिए तय की गईprovidesDefault. (aosp/3318540 b/374263387) ChangeListको ऑप्टिमाइज़ करें. (3318538)
वर्शन 1.8.0-alpha05
30 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05 रिलीज़ हो गया है. वर्शन 1.8.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SnapshotIdSetमेंInt.MAX_VALUEजोड़ने पर स्टैक ओवरफ़्लो की समस्या ठीक की गई. (b/370536104, Ic4179f6)- रनटाइम माइक्रो-ऑप्टिमाइज़ेशन (I50c60)
- R8 को, debugging runtimeCheck कॉल (I8c44) हटाने की अनुमति दें
compoundKeyOfको रिकर्सिव के बजाय इटरेटिव बनाया गया (I5817f)
बाहरी योगदान
- कलेक्शन की सूचियों के साथ स्टैक लागू करना (I7d47c)
वर्शन 1.8.0-alpha04
16 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04 रिलीज़ हो गया है. वर्शन 1.8.0-alpha04 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- कंस्ट्रक्टर (85c00f) में राज्य के रिकॉर्ड के लिए स्नैपशॉट आईडी उपलब्ध कराएं
- क्लास की पुष्टि से जुड़ी गड़बड़ियों (6ee4a6) से बचने के लिए,
SnapshotState***को फिर से फ़ैक्टर करें - R8 के नियमों में बदलाव करके, थ्रो इनलाइनिंग को रोकें (5beb92)
- ऑपरेशंस को माइक्रो-ऑप्टिमाइज़ करें (d73c5c)
- JVM पर
SynchronizedObjectके असाइनमेंट को ऑप्टिमाइज़ करें (2b043f)
वर्शन 1.8.0-alpha03
2 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03 रिलीज़ हो गया है. वर्शन 1.8.0-alpha03 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
rememberCoroutineScope(f61464) के लिए, चाइल्ड कॉन्टेक्स्ट को लेज़ी तरीके से बनाया गयाrememberCoroutineScopeका इस्तेमाल आम तौर पर, कंपोज़िशन के बाद होने वाले इवेंट के जवाब में को-रूटीन लॉन्च करने के लिए किया जाता है. कुछ मामलों में, ये इवेंट कभी नहीं होते. इससे बिना किसी फ़ायदे के, नौकरी बनाने और रद्द करने की लागत बढ़ जाती है.rememberCoroutineScopeसे मिले स्कोप को, ऐक्सेस किए जाने परcoroutineContextको लेज़ी तरीके से बनाने के लिए सेट करें. इससे, अगर स्कोप का इस्तेमाल कभी नहीं किया जाता है, तो जॉब बनाने और रद्द करने की प्रोसेस पूरी तरह से नहीं होगी.
वर्शन 1.8.0-alpha02
18 सितंबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02 रिलीज़ हो गया है. वर्शन 1.8.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
PausableCompositionजोड़ा गया है. इससे एक सबकंपोज़िशन बनाई जा सकती है. इसे कंपोज़िशन के दौरान रोका जा सकता है. साथ ही, इसे कंपोज़िशन पर एसिंक्रोनस तरीके से लागू किया जा सकता है. फ़िलहाल, कंपाइलर की मदद से वीडियो को रोकने की सुविधा पर काम चल रहा है. (I3394b)
वर्शन 1.8.0-alpha01
4 सितंबर, 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01 रिलीज़ हो गया है. वर्शन 1.8.0-alpha01 में ये बदलाव शामिल हैं.
वर्शन 1.7
वर्शन 1.7.8
12 फ़रवरी, 2025
androidx.compose.runtime:runtime-*:1.7.8 रिलीज़ हो गया है. वर्शन 1.7.8 में ये बदलाव शामिल हैं.
वर्शन 1.7.7
29 जनवरी, 2025
androidx.compose.runtime:runtime-*:1.7.7 रिलीज़ हो गया है. 1.7.6 वर्शन के बाद से कोई बदलाव नहीं हुआ है.
androidx.compose.runtime:runtime-*:1.7.6 रिलीज़ हो गया है. वर्शन 1.7.6 में ये बदलाव शामिल हैं.
वर्शन 1.7.5
30 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.7.5 रिलीज़ हो गया है. वर्शन 1.7.5 में ये बदलाव शामिल हैं.
वर्शन 1.7.4
16 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.7.4 रिलीज़ हो गया है. वर्शन 1.7.4 में ये बदलाव शामिल हैं.
वर्शन 1.7.3
2 अक्टूबर, 2024
androidx.compose.runtime:runtime-*:1.7.3 रिलीज़ हो गया है. वर्शन 1.7.3 में ये बदलाव शामिल हैं.
वर्शन 1.7.2
18 सितंबर, 2024
androidx.compose.runtime:runtime-*:1.7.2 रिलीज़ हो गया है. वर्शन 1.7.2 में ये बदलाव शामिल हैं.
वर्शन 1.7.1
10 सितंबर, 2024
- Android आर्टफ़ैक्ट में कोई बदलाव नहीं किया गया है.
-desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना है. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके.
वर्शन 1.7.0
4 सितंबर, 2024
androidx.compose.runtime:runtime-*:1.7.0 रिलीज़ हो गया है. वर्शन 1.7.0 में ये बदलाव शामिल हैं.
1.6.0 के बाद हुए ज़रूरी बदलाव
- इसमें कंपोज़िशन लोकल की वैल्यू देने की सुविधा जोड़ी गई है. यह वैल्यू, अन्य कंपोज़िशन लोकल की वैल्यू के आधार पर कैलकुलेट की जाती है. इसके लिए, डिफ़ॉल्ट रूप से
compositionLocalWithComputedDefault()का इस्तेमाल किया जाता है. इसके अलावा,providesके बजायprovidesComputedका इस्तेमाल करके वैल्यू कैलकुलेट करने के लिए, लैम्डा भी दिया जा सकता है. - कंपोज़िशन लोकल की वैल्यू पाने के लिए, कंपोज़िशन लोकल की
currentValueप्रॉपर्टी का इस्तेमाल किया जा सकता है. इस प्रॉपर्टी को, वैल्यू का हिसाब लगाने वाले Lambda फ़ंक्शन से ऐक्सेस किया जा सकता है. इसका इस्तेमालcurrentके बजाय किया जाता है.currentको सिर्फ़@Composableफ़ंक्शन में ऐक्सेस किया जा सकता है. (Iadbc0) - नए बनाए गए स्टेट ऑब्जेक्ट, अन्य स्नैपशॉट से तुरंत ऐक्सेस किए जा सकते हैं. इनमें ग्लोबल स्नैपशॉट भी शामिल है. हालांकि, ये अपनी शुरुआती स्थिति में होते हैं. इसके बाद किए गए बदलाव तब तक नहीं दिखते, जब तक उस स्नैपशॉट को लागू नहीं किया जाता जिसमें ऑब्जेक्ट बनाया गया था.
mutableStateOf()की शुरुआती स्थिति, साथ ही उनके प्रिमिटिव वर्शन,mutableStateOf()को पैरामीटर के तौर पर पास की गई वैल्यू होती है.mutableStateListOf()औरmutableStateMapOf()की शुरुआती स्थिति खाली है.Snapshot.isInSnapshotऔरSnapshot.PreexistingSnapshotIdजोड़े गए हैं. इनका इस्तेमाल, स्टेट ऑब्जेक्ट को चालू करने के लिए किया जाता है, ताकि इसे बनाने के बाद ग्लोबल स्नैपशॉट से तुरंत ऐक्सेस किया जा सके.- कस्टम स्टेट ऑब्जेक्ट, बिल्ट-इन स्नैपशॉट ऑब्जेक्ट में किए गए बदलावों के पैटर्न को फ़ॉलो करके, तुरंत ऐक्सेस किए जा सकते हैं. (I84a17)
- कंपोज़ लाइब्रेरी के लिए
nonSkippingGroupOptimizationचालू करें. इससे androidx में, फिर से शुरू नहीं किए जा सकने वाले सभी कंपोज़ेबल फ़ंक्शन के लिए जनरेट किया गया कोड ज़्यादा असरदार होता है. आने वाले समय में, हम इसे डिफ़ॉल्ट रूप से चालू करने का प्लान बना रहे हैं. I(acbc08) - एक ही फ़्रेम पर, सबकंपोज़िशन में कंपोज़ किए जा सकने वाले लैम्डा को अमान्य करें. (98301c)
onReleaseकॉलबैक को उसी क्रम में कॉल करें जिस क्रम मेंonForgottenको कॉल किया गया था. (2cd790)- तेज़ी से स्किप करने का मोड चालू करें (ed1766)
- ज़्यादा मामलों में
currentCompoundHashKeyको यूनीक बनाएं (d4a872)
वर्शन 1.7.0-rc01
21 अगस्त, 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01 रिलीज़ हो गया है. वर्शन 1.7.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 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प्रॉपर्टी का इस्तेमाल किया जा सकता है. इस प्रॉपर्टी को, वैल्यू का हिसाब लगाने वाले Lambda फ़ंक्शन से ऐक्सेस किया जा सकता है. इसका इस्तेमालcurrentके बजाय किया जाता है.currentको सिर्फ़@Composableफ़ंक्शन में ऐक्सेस किया जा सकता है. (Iadbc0)
एपीआई में हुए बदलाव
- नए बनाए गए स्टेट ऑब्जेक्ट, अन्य स्नैपशॉट से तुरंत ऐक्सेस किए जा सकते हैं. इनमें ग्लोबल स्नैपशॉट भी शामिल है. हालांकि, ये अपनी शुरुआती स्थिति में होते हैं. इसके बाद किए गए बदलाव तब तक नहीं दिखते, जब तक उस स्नैपशॉट को लागू नहीं किया जाता जिसमें ऑब्जेक्ट बनाया गया था.
mutableStateOf()की शुरुआती स्थिति, साथ ही उनके प्रिमिटिव वर्शन,mutableStateOf()को पैरामीटर के तौर पर पास की गई वैल्यू होती है.mutableStateListOf()औरmutableStateMapOf()की शुरुआती स्थिति खाली है.Snapshot.isInSnapshotऔरSnapshot.PreexistingSnapshotIdजोड़े गए हैं. इनका इस्तेमाल, स्टेट ऑब्जेक्ट को चालू करने के लिए किया जाता है, ताकि इसे बनाने के बाद ग्लोबल स्नैपशॉट से तुरंत ऐक्सेस किया जा सके.- कस्टम स्टेट ऑब्जेक्ट, बिल्ट-इन स्नैपशॉट ऑब्जेक्ट में किए गए बदलावों के पैटर्न को फ़ॉलो करके, तुरंत ऐक्सेस किए जा सकते हैं. (I84a17)
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए स्नैपशॉट में
readObserverको मर्ज करने की समस्या ठीक की गई. इस वजह से,snapshotFlowके अंदर इस्तेमाल किए जाने पर, नेस्ट की गई डिराइव की गई स्थितियां पूरी तरह से अमान्य नहीं होती थीं. (Idf138)
वर्शन 1.7.0-alpha06
3 अप्रैल, 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06 रिलीज़ हो गया है. वर्शन 1.7.0-alpha06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक वैल्यू देने की सुविधा से जुड़ी समस्या को ठीक किया गया
providesDefault(538f45) - Recomposer को फ़्रेम क्लॉक (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 में, फिर से शुरू नहीं किए जा सकने वाले सभी कंपोज़ेबल फ़ंक्शन के लिए जनरेट किया गया कोड ज़्यादा असरदार होता है. आने वाले समय में, हम इसे डिफ़ॉल्ट रूप से चालू करने का प्लान बना रहे हैं. I(acbc08)
वर्शन 1.7.0-alpha03
21 फ़रवरी, 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03 रिलीज़ हो गया है. वर्शन 1.7.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- बदलावों का पता लगाने की सुविधा को बेहतर बनाने के लिए, ग्रुप बदलने की सुविधा शुरू की गई (0941b5)
परफ़ॉर्मेंस में सुधार
- बदलावों का पता लगाते समय, मेमोरी के बेहतर तरीके से इस्तेमाल करने की सुविधा जोड़ी गई (53e7fd)
- कंपोज़र में मेमोरी लीक की समस्या को ठीक किया गया (0e097d)
- फिर से कंपोज़ करते समय (e19a7e), अमान्यताओं को पास करने के लिए
ScopeMapका इस्तेमाल करें - अमान्यताओं के मैप को ऑप्टिमाइज़ करें, ताकि सिर्फ़ डिराइव की गई स्थितियां बनी रहें (f11c44)
IdentityArraySetके इस्तेमाल कोScatterSetसे बदलें (db572e)ScopeMap(bb0530) मेंremoveScopeको ऑप्टिमाइज़ करें
वर्शन 1.7.0-alpha02
7 फ़रवरी, 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02 रिलीज़ हो गया है. वर्शन 1.7.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक ही फ़्रेम पर, सबकंपोज़िशन में कंपोज़ किए जा सकने वाले लैम्डा को अमान्य करें. (98301c)
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)
गड़बड़ियां ठीक की गईं
- इस कुकी का इस्तेमाल, कॉन्टेक्स्ट में कंपोज़िशन लोकल स्कोप की स्थिति के लिए रेफ़रेंशियल नीति के तौर पर किया जाता है. (83361c)
- इनलाइन लैम्ब्डा के लिए, $dirty कैप्चर को सीमित करें. (acfca0)
- कभी-कभी, मूव किए जा सकने वाले कॉन्टेंट को गलत कंपोज़िशन लोकल मिलने की समस्या ठीक की गई. (035cd6)
RecomposeScopeImplमें, मेमोरी इस्तेमाल न करने वाले हैशमैप का इस्तेमाल करें. (d79494)DerivedStateमेंObjectIntMapका इस्तेमाल करें. (21862e)DerivedStateमें intSnapshotThreadLocalके लिए,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)
rememberSaveableकी वैल्यू शून्य होने पर,stateSaverको वापस लाने के तरीके से जुड़ी समस्या ठीक की गई (90748c)
वर्शन 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)- स्टेट और
MutableStateके प्रिमिटिव वर्शन जोड़े गए (fb3d89) Snapshot.isApplyObserverNotificationPendingको जोड़ा गया (I672a5)Stateएपीआई के प्रिमिटिव वर्शन जोड़े गए हैं. इससे Int, Long, Float, और Double वैल्यू कोStateऑब्जेक्ट में ट्रैक किया जा सकता है. इसके लिए, ऑटोबॉक्सिंग के लिए जुर्माना नहीं देना होगा. इनका इस्तेमाल करने के लिए, फ़ैक्ट्री के नए तरीकेmutableIntState(Int),mutableFloatStateOf(Float)वगैरह इस्तेमाल करें. (I48e43)
गड़बड़ियां ठीक की गईं
- हटाए जाने वाले सबकंपोज़िशन को फिर से कंपोज़ करने की प्रोसेस को स्किप करें. (Ieeb99, b/254645321)
ComposerImplमें स्नैपशॉट का रेफ़रंस न रखें (0206f7)- कंपोज़िशन को दो बार लागू न करें (f5791b)
- यह कुकी, उन वैल्यू के लिए अमान्य होने की पुष्टि करती है जो शुरू नहीं की गई हैं (aa2a92)
- कंपोज़िशन को बंद करने के दौरान
onEndChangesपर कॉल करें. (62cc8c) - कॉन्टेंट को सब-कंपोज़िशन में ले जाने की समस्या ठीक की गई (4beb41)
- डेडलॉक की संभावित समस्याओं को ठीक किया गया (c1a425 और 8edce0)
- Android विंडो के लिए बनाया गया रीकंपोज़र, अब ON_STOP सूचना मिलने पर, सिर्फ़
withFrameNanosको कॉल ब्लॉक करेगा. पहले यह पूरी कंपोज़िशन को ब्लॉक करता था. इसका मतलब है कि बंद की गई गतिविधियों से जुड़ी विंडो, डेटा में हुए बदलावों के लिए फिर से कंपोज़ होती रहेंगी. हालांकि, ऐनिमेशन याwithFrameNanosको कॉल करने वाला कोई भी अन्य व्यक्ति ब्लॉक हो जाएगा. (Id9e7f, b/240975572) - इफ़ेक्ट 3784073 को हटाने से पहले,
LayoutNodeके लिए डीऐक्टिवेशन कॉलबैक को लागू करें - रीस्टार्ट किए गए लैंबडा के लिए बदले गए फ़्लैग ठीक किए गए ea81df9
- नोड 73fd4d8 के साथ कंपोज़ेबल के लिए, लाइव एडिट रिग्रेशन को ठीक किया गया
- ON_STOP को कंपोज़िशन ae276f1 के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- Invalidate
SnapshotStateObserverscopes for unchanged derived states 84d9b1c - कंपोज़िशन को हटाने के दौरान, संभावित डेड-लॉक की समस्या को ठीक किया गया 28761fc
- कॉन्टेंट को सब-कंपोज़िशन 92d4156 में ले जाने की समस्या ठीक की गई
- रीस्टार्ट किए गए लैम्डा के लिए, बदले गए फ़्लैग ठीक किए गए (8a03e9)
- इफ़ेक्ट हटाने से पहले,
LayoutNodeके लिए डीऐक्टिवेशन कॉलबैक को लागू करें (8b0fa4) - नोड ग्रुप खत्म करते समय,
endToMarker()को ठीक करें. (d71d980) - खाता बंद करने की जांच के लिए, मौजूदा
SlotWriterग्रुप का इस्तेमाल करें (a0b518b) SlotTable.moveSlotGapTo()में मौजूदfillको हटाएं और उसे बंद करें (81f9935)- चलते-फिरते कॉन्टेंट के एक जगह से दूसरी जगह ले जाते समय, अमान्यताओं के न दिखने की समस्या ठीक की गई (1d7c024)
- चल-फिर सकने वाले कॉन्टेंट को दूसरी जगह ले जाने पर, तुरंत अमान्य होने की समस्या ठीक की गई (8676618)
परफ़ॉर्मेंस में सुधार
- अगर स्नैपशॉट में बदलाव नहीं किया गया है, तो
DerivedStateमेंreadableHashकी गिनती करने से बचें. (307102) - कम किए गए असाइनमेंट (I65c09, d7ea77, 727974, और 445808 )
- ईमेल लिखने की सुविधा
CoroutineScopesको तुरंत बंद करने की सुविधा (a55362 और bd382f) - ऐसी स्थिति में, राज्य के ऑब्जेक्ट के रिकॉर्ड को ऐसे रिकॉर्ड से बदल दिया जाता है जिन्हें ऐक्सेस नहीं किया जा सकता (c986960)
- ग्रुप बनाते समय, सही स्कोप वाले कंपोज़र का इस्तेमाल करें (9a5e5b6)
- स्नैपशॉट अमान्य होने की जानकारी सेव करने के लिए
IdentityArraySetका इस्तेमाल करें (7f60cca) - स्नैपशॉट ऑब्ज़र्वेशन के लिए, कम एलोकैट करें (5bc535f)
वर्शन 1.5.0-rc01
26 जुलाई, 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
बदलावों के रिकॉर्ड होने तक, डिराइव की गई स्थितियों को फिर से पढ़ने की प्रोसेस को रोकें (f38099)
प्रिमिटिव के लिए,
mutableStateOf()कॉल को उनके संबंधित खास टाइप पर माइग्रेट करने का सुझाव देने के लिए, जांच का विकल्प उपलब्ध है. इसका लिंट आईडीAutoboxingStateCreationहै. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती थी. Android Studio के एडिटर और आपके प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को सूचना से बदलकर चेतावनी (या इससे ज़्यादा) पर सेट करें. इसके लिए, अपने मॉड्यूल के build.gradle या build.gradle.kts कॉन्फ़िगरेशन मेंwarning "AutoboxingStateCreation"को इस तरह से एलान करें (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
वर्शन 1.5.0-beta03
28 जून, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हटाए जाने वाले सबकंपोज़िशन को फिर से कंपोज़ करने की प्रोसेस को स्किप करें. (Ieeb99, b/254645321)
वर्शन 1.5.0-beta02
7 जून, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- अगर स्नैपशॉट में बदलाव नहीं किया गया है, तो
DerivedStateमेंreadableHashकी गिनती करने से बचें. (307102)
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- रीकंपोज़िशन, कलर ऐनिमेशन, और
AndroidComposeView(Ib2bfa) में किए गए असाइनमेंट हटा दिए गए हैं @StateFactoryMarkerएनोटेशन जोड़ा गया है, ताकि उन फ़ंक्शन को मार्क किया जा सके जो स्थितियां बनाते हैं और जिन्हेंrememberकॉल में रैप किया जाना चाहिए. (I64550)- स्टेट और
MutableStateके प्रिमिटिव वर्शन जोड़े गए (fb3d89) Snapshot.isApplyObserverNotificationPendingको जोड़ा गया (I672a5)
गड़बड़ियां ठीक की गईं
- कम किए गए असाइनमेंट (I65c09, d7ea77, 727974, और 445808 )
ComposerImplमें स्नैपशॉट का रेफ़रंस न रखें (0206f7)- ईमेल लिखने की सुविधा
CoroutineScopesको तुरंत बंद करने की सुविधा (a55362 और bd382f) - कंपोज़िशन को दो बार लागू न करें (f5791b)
- यह कुकी, उन वैल्यू के लिए अमान्य होने की पुष्टि करती है जो शुरू नहीं की गई हैं (aa2a92)
- कंपोज़िशन को बंद करने के दौरान
onEndChangesपर कॉल करें. (62cc8c) - कॉन्टेंट को सब-कंपोज़िशन में ले जाने की समस्या ठीक की गई (4beb41)
- डेडलॉक की संभावित समस्याओं को ठीक करें (c1a425
- ON_STOP को कंपोज़िशन (f4a2d1) के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- रीस्टार्ट किए गए लैम्डा के लिए, बदले गए फ़्लैग ठीक किए गए (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एपीआई के प्रिमिटिव वर्शन जोड़े गए हैं. इससे Int, Long, Float, और Double वैल्यू को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 विंडो के लिए बनाया गया रीकंपोज़र, अब ON_STOP सूचना मिलने पर, सिर्फ़
withFrameNanosको कॉल ब्लॉक करेगा. पहले यह पूरी कंपोज़िशन को ब्लॉक करता था. इसका मतलब है कि बंद की गई गतिविधियों से जुड़ी विंडो, डेटा में हुए बदलावों के लिए फिर से कंपोज़ होती रहेंगी. हालांकि, ऐनिमेशन याwithFrameNanosको कॉल करने वाला कोई भी अन्य व्यक्ति ब्लॉक हो जाएगा. (Id9e7f, b/240975572)
गड़बड़ियां ठीक की गईं
- स्नैपशॉट सूची और मैप में संभावित डेडलॉक को ठीक किया गया 5c1a425
- इफ़ेक्ट 3784073 को हटाने से पहले,
LayoutNodeके लिए डीऐक्टिवेशन कॉलबैक को लागू करें - रीस्टार्ट किए गए लैम्डा के लिए बदले गए फ़्लैग ठीक किए गए ea81df9
- नोड 73fd4d8 के साथ कंपोज़ेबल के लिए, लाइव एडिट रिग्रेशन को ठीक किया गया
- ON_STOP को कंपोज़िशन ae276f1 के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- Invalidate
SnapshotStateObserverscopes for unchanged derived states 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में जोड़ा गया है, ताकि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 ComposableMethod7b6c7ad मेंparameterTypesप्रॉपर्टी जोड़ें
गड़बड़ियां ठीक की गईं और परफ़ॉर्मेंस में सुधार किए गए
SnapshotStateObserver29f4a3e में दोनों स्कोप इंडेक्स मिटाएं- उन ग्रुप को जोड़ें जिनकी ज़रूरत, स्किप न किए जा सकने वाले लैंबडा 7d06752 के मुख्य हिस्से में है
- स्नैपशॉट की स्थिति 93fcae8 की मेमोरी रेफ़रंस की विशेषताओं को बेहतर बनाया गया
- कंपोज़िशन में लोकल लुकअप के लिए बॉक्सिंग हटाएं 0875717
- गैर-दोहराए जा सकने वाले नोड ग्रुप के लिए सही कुंजी का इस्तेमाल करें 6388d8d
- Protect
SnapshotStateObserverfrom recursive and concurrent applies 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को जोड़ा गया है. इससे Compose नोड के लाइफ़साइकल को मॉनिटर किया जा सकता है (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इनलाइन/deprecated-hidden फ़ंक्शन के टाइप/nullability के बारे में ज़्यादा जानकारी (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
java.lang.reflect.Method#getParameterTypes()(Iab0c3) के जैसा हीComposableMethodक्लास में नया सार्वजनिक तरीका जोड़ना
गड़बड़ियां ठीक की गईं
- स्नैपशॉट लागू होने की सूचनाएं अब
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.compose.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 में ये बदलाव शामिल हैं.
1.2.0 के बाद हुए ज़रूरी बदलाव
अपवाद हैंडलिंग / लाइव एडिट सपोर्ट
- लाइव बदलाव की सुविधा को बेहतर तरीके से काम करने के लिए, एपीआई जोड़े गए हैं. इससे कंपोज़िशन के दौरान अपवादों को मैनेज किया जा सकेगा
- हॉट रिलोड के लिए कंपोज़िशन से जुड़ी गड़बड़ी को ठीक करना
- सेव/रीस्टोर करते समय, लाइव एडिट से जुड़ी गड़बड़ियों को ठीक करना
कंपोज़िशन ट्रेसिंग
- नए कंपोज़िशन ट्रेसिंग टूलिंग के साथ काम करने के लिए, रनटाइम ट्रेसिंग एपीआई जोड़े गए
- कंपोज़ किए जा सकने वाले ट्रेस इवेंट के शुरू/खत्म होने के कॉल जनरेट करना
- ComposerKt.traceEventStart(Int, String) को फिर से जोड़ा गया
Composable Reflection API
ComposableMethodनाम का एक नया एपीआई जोड़ा गया है. इससे कंपोज़ेबल एपीआई को ज़्यादा भरोसेमंद तरीके से रिफ़्लेक्शन के आधार पर कॉल किया जा सकेगा.- invokeComposable को Compose रनटाइम में ले जाना
- कंपोज़ेबल तरीके को लागू करने के लिए, एपीआई को फिर से तैयार किया गया
रनटाइम से जुड़ी गड़बड़ियां ठीक की गईं
- मार्कर की जांच करने के लिए, स्लॉट टेबल के लिए रेंज टेस्ट से जुड़ी गड़बड़ी ठीक की गई
- कॉन्टेंट को SubcomposeLayout में ले जाने और उससे बाहर ले जाने की अनुमति देना
- सबकंपोज़िशन के नए कॉन्टेंट में कॉन्टेंट को ले जाने की समस्या ठीक की गई
स्नैपशॉट सिस्टम
- स्नैपशॉट सिस्टम में, मेमोरी मैनेजमेंट, परफ़ॉर्मेंस, और सही तरीके से काम करने से जुड़े कई सुधार किए गए हैं.
- SnapshotStateObserver में ऑप्टिमाइज़ स्कोप हटाने की सुविधा
- पारदर्शी स्नैपशॉट से बनाए गए नेस्ट किए गए स्नैपशॉट हटाना
- ग्लोबल स्नैपशॉट से स्थिति को पढ़ने के दौरान होने वाली रेस कंडीशन को ठीक किया गया
- SnapshotStateObserver में DerivedState के लिए सहायता
- जब किसी अन्य स्कोप में कंपोज़िशन से डिराइव की गई स्थिति को पढ़ा जाता है, तब उसे हटाने से रोकना
- DerivedState में HashMap के बजाय IdentityArrayMap का इस्तेमाल करना
- बदले जा सकने वाले वेक्टर का इस्तेमाल करने के लिए, डिराइव किए गए स्टेट ऑब्ज़र्वर को अपडेट करना
- SnapshotStateObserver की स्थिति को साफ़ करने से जुड़ा अपडेट
- SnapshotStateObserver.invalidated को ArraySet से बदलें
- ग्लोबल स्नैपशॉट से स्थिति को पढ़ने के दौरान होने वाली रेस कंडीशन को ठीक किया गया
- DerivedState हैश की गिनती में पुराने रिकॉर्ड के इस्तेमाल की समस्या ठीक की गई
- ग्लोबल स्नैपशॉट को आगे बढ़ाते समय, रेस कंडीशन को ठीक किया गया
- SnapshotStateObserver में स्कोप ऑब्ज़र्वेशन को तेज़ी से क्लीन अप करना
वर्शन 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- पिछले वर्शन के साथ काम करने की सुविधा के लिए,
ComposerKt.traceEventStart(Int, String)को फिर से जोड़ा गया (I6e6de)
वर्शन 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 Runtime में, 1.2.0 वर्शन में कुछ सुविधाएं जोड़ी गई थीं. साथ ही, गड़बड़ियों को ठीक करने के लिए कई बदलाव किए गए थे. सबसे अहम नई सुविधा,
movableContentOfएपीआई को लॉन्च करना था. इसका इस्तेमाल, शेयर किए गए एलिमेंट ट्रांज़िशन जैसे जटिल यूज़र एक्सपीरियंस (यूएक्स) को चालू करने के लिए किया जा सकता है.movableContentOfएपीआई, कॉम्पोज़ेबल लैंबडा को ऐसे लैंबडा में बदलता है जो अपनी स्थिति और उससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन से हट जाता है, तो स्थिति को कुछ समय के लिए सेव कर लिया जाता है. अगर लैंबडा को कोई नया कॉल कंपोज़िशन में शामिल होता है, तो स्थिति और उससे जुड़े नोड को नए कॉल की जगह पर ले जाया जाता है. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्थिति को हमेशा के लिए हटा दिया जाता है. साथ ही, इस बारे में मॉनिटर करने वालों को सूचना दी जाती है.अगर एक ही कंपोज़िशन में
movableContentOfलैम्डा को कई बार कॉल किया जाता है, तो हर कॉल के लिए नया स्टेट और नोड बनाया जाता है. साथ ही, जैसे-जैसे कॉल कंपोज़िशन से बाहर निकलते हैं और नए कॉल जुड़ते हैं, वैसे-वैसे स्टेट को कंपोज़िशन से बाहर निकलने वाले पहले कॉल से, जुड़ने वाले कॉल में ट्रांसफ़र किया जाता है. यह ट्रांसफ़र, कॉल किए जाने के क्रम के हिसाब से होता है. नए कॉल में इस्तेमाल नहीं किए गए सभी स्टेट को हमेशा के लिए हटा दिया जाता है.इसके अलावा, कुछ अन्य नई सुविधाओं को जोड़ने के साथ-साथ, रनटाइम और स्नैपशॉट की स्थिति को स्थिर करने में भी काफ़ी समय लगा. मेमोरी लीक की कई समस्याओं को ठीक किया गया और कोड पाथ को ऑप्टिमाइज़ किया गया.
बदलावों की खास जानकारी वाली सूची यहां दी गई है:
1.2 में नई सुविधाएं
- Add experimental snapshot unsafeEnter/Leave
- Add Snapshot.asContextElement experimental API
- Introduce Snapshot.withoutReadObservation
- किसी कंपोज़िशन में स्टेट को बदलने की अनुमति देना
- Compose में Recompositions को ट्रेस करना
1.2 में परफ़ॉर्मेंस
- कंपोज़िशन की स्थानीय परफ़ॉर्मेंस को बेहतर बनाना
- Compose के लिए बेसलाइन प्रोफ़ाइलें, बेंचमार्क का इस्तेमाल करके बनाई जानी चाहिए
1.2 में गड़बड़ियां ठीक की गईं
- रिलीज़ रीकंपोज़ स्कोप से ट्रैकिंग की जानकारी हटाना
- जब किसी अन्य स्कोप में कंपोज़िशन से डिराइव की गई स्थिति को पढ़ा जाता है, तब उसे हटाने से रोकना
- SnapshotStateObserver में ज़्यादा असरदार removeScope() का इस्तेमाल करें
- कंपोज़िशन में, डिराइव की गई स्थिति की डिपेंडेंसी को हटाना
- movable content में inner recomposition के बाद, currentCompositeKeyHash बदलने की समस्या ठीक की गई
- डिस्पोज़ल के दौरान, अमान्य कंपोज़िशन मिटाना
- रीकंपोज़िशन के दौरान, डिराइव की गई स्थिति को पढ़ने से जुड़ी समस्या ठीक की गई
- डिराइव किए गए स्टेट ऑब्जेक्ट को ऑब्ज़र्व करते समय मेमोरी लीक की समस्या ठीक की गई
- movableContent के कंपोज़िट हैश की को एक जैसा रखने के लिए ठीक किया गया
- कंपोज़र के क्रैश होने की समस्या ठीक की गई
- पक्का करें कि किसी ग्रुप को अमान्य करने पर, उसे फिर से कंपोज़ किया जाए
- input के साथ rememberSaveable को गलत क्रम में वापस लाने पर होने वाली गड़बड़ी को ठीक किया गया
वर्शन 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose लाइब्रेरी में मौजूद इंटरफ़ेस अब 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) @ComposableTargetएनोटेशन और@ComposableTargetMarkerसे मार्क किए गए एनोटेशन को अब फ़ाइल स्कोप पर इस्तेमाल किया जा सकता है. इसके लिए,@fileप्रीफ़िक्स का इस्तेमाल करें. फ़ाइल स्कोप में टारगेट एनोटेशन का इस्तेमाल करने पर, कंपाइलर यह मान लेगा कि फ़ाइल में मौजूद सभी कंपोज़ेबल फ़ंक्शन, ऐप्लिकेशन से जुड़े ऐप्लिकेशन को टारगेट करने के लिए हैं. उदाहरण के लिए,@file:UiComposableका इस्तेमाल करने से यह पता चलता है कि सभी@Composableफ़ंक्शन, Compose UI applier को टारगेट करते हैं. जिस फ़ंक्शन को किसी दूसरे ऐप्लिकेशन को टारगेट करना है उसे टारगेट मार्कर एनोटेशन को साफ़ तौर पर सप्लाई करना होगा. (I40804)
वर्शन 1.2.0-alpha08
20 अप्रैल, 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08 रिलीज़ हो गया है. वर्शन 1.2.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CompositionTracerइंटरफ़ेस मेंTracingInProgressजोड़ा गया. (Ic6f12)- संगीतकार के तौर पर
recomposeScopeIdentityजोड़ें (I0c873) - ट्रेसिंग से जुड़े प्रतिबंधित एपीआई (Composer.setTracer) को
OptIn(InternalComposeTracingApi)पर सेट किया गया है. (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 { ... }जोड़ा गया. इससे उपयोगकर्ता, इस ब्लॉक के दौरान पढ़ी गई स्थिति की वैल्यू में हुए बदलावों की सदस्यता लिए बिना, पास किए गए लैम्ब्डा को चला सकते हैं. यह उन मामलों में आपके काम आ सकता है जब आपको स्नैपशॉट पर आधारित थ्रेड सेफ़ राइट/रीड से फ़ायदा पाना हो, लेकिन आपको बिना किसी ज़रूरत के फिर से कंपोज़ किए या फिर से मेज़र किए बिना वैल्यू को पढ़ने की सुविधा चाहिए. (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 coroutines 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के बराबर होता है. इसमें एट्रिब्यूट क्लास का पूरी तरह क्वालिफ़ाइड नाम, ऐप्लिकेशन पैरामीटर के तौर पर होता है.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परNullPointerExceptionठीक करें (aosp/1947059, b/206677462)- Android पर क्लिपबोर्ड से कॉन्टेंट पढ़ते समय, क्लिपबोर्ड में मौजूद कॉन्टेंट की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. (I06020, b/197769306)
LazyVerticalGridमें दाएं से बाएं की ओर टेक्स्ट लिखने की सुविधा ठीक की गई (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 Material, मटीरियल डिज़ाइन कॉम्पोनेंट के जैसा ही काम करता है. साथ ही, Views और Compose को एक साथ इस्तेमाल करने पर, एक जैसा अनुभव मिलता है. इस बदलाव से यह भी पक्का होता है कि Compose Material कॉम्पोनेंट का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) बनाते समय, टच टारगेट की ऐक्सेसिबिलिटी से जुड़ी ज़रूरी शर्तें पूरी हों. - नेविगेशन रेल के लिए स्टेबल सपोर्ट
- पहले एक्सपेरिमेंट के तौर पर उपलब्ध कई एपीआई को स्टेबल वर्शन में अपग्रेड करता है
- Kotlin के नए वर्शन के लिए सहायता
वर्शन 1.1.0-rc03
26 जनवरी, 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03 रिलीज़ हो गया है. वर्शन 1.1.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose Material के साथ काम करने के लिए अपडेट किया गया
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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Composer के उन तरीकों से
InternalCompilerApiहटाया गया है जिन्हें क्रॉस-मॉड्यूल (I1aa0b) कहा जाना ज़रूरी है Recomposer.stateको बंद कर दिया गया है और इसकी जगहRecomposer.currentStateका इस्तेमाल किया जा रहा है, ताकि इसके टाइप को StateFlow में बदला जा सके (Ic2ab3, b/197773820)
वर्शन 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 Compiler अब Compose Runtime (1.0) के पुराने वर्शन के साथ काम करता है. इस बदलाव से पहले, Compose Compiler सिर्फ़ Compose Runtime के उसी वर्शन या उसके बाद के वर्शन के साथ काम करता था. इस बदलाव के बाद, Compose Compiler, Compose Runtime (1.0) के पुराने वर्शन के साथ काम करता है. (aosp/1796968)
- Compose
1.1.0-alpha03को Kotlin1.5.30पर निर्भर रहने के लिए अपडेट किया गया. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- derivedStateOf इंस्टेंस को ट्रैक करने के दौरान क्रैश होने की समस्या ठीक की गई. (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 में ये बदलाव शामिल हैं.
Compose 1.0.2 की रिलीज़ के साथ काम करने के लिए अपडेट किया गया. Compose 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 में ये बदलाव शामिल हैं.
- SnapshotStateObserver में रेस कंडीशन की समस्या ठीक की गई है. इससे NullPointerException की समस्या कभी-कभी होती थी. (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.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.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फ़्लैग होता है उससे पता चलता है कि यह एक ऐसा तरीका है जिसे स्टार्टअप के बाद कॉल किया जाता है.इस फ़ाइल में मौजूद क्लास से पता चलता है कि इसका इस्तेमाल स्टार्टअप के दौरान किया जाता है. इसलिए, इसे हीप में पहले से ही असाइन कर दिया जाना चाहिए, ताकि क्लास लोड करने की लागत से बचा जा सके.
यह कैसे काम करता है?
- लाइब्रेरी इन नियमों को तय कर सकती हैं. ये नियम, एएआर आर्टफ़ैक्ट में पैकेज किए जाएंगे. जब इन आर्टफ़ैक्ट को शामिल करके कोई ऐप्लिकेशन बनाया जाता है, तो इन नियमों को एक साथ मर्ज कर दिया जाता है. इसके बाद, मर्ज किए गए नियमों का इस्तेमाल करके, ऐप्लिकेशन के लिए एक कॉम्पैक्ट बाइनरी एआरटी प्रोफ़ाइल बनाई जाती है. जब ऐप्लिकेशन को डिवाइसों पर इंस्टॉल किया जाता है, तब एआरटी इस प्रोफ़ाइल का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के किसी खास सबसेट को पहले से कंपाइल किया जा सकता है, ताकि ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सके. खास तौर पर, पहली बार ऐप्लिकेशन चलाने पर. ध्यान दें कि इससे डीबग किए जा सकने वाले ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
वर्शन 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)
गड़बड़ियां ठीक की गईं
- LazyColumn/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-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब 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)rememberSaveable()के इनपुट पैरामीटर (I1b110, b/182403380) के साथ इस्तेमाल किए जाने पर, पुरानी वैल्यू को वापस लाने की समस्या को ठीक किया गया है
वर्शन 1.0.0-beta03
24 मार्च, 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03 रिलीज़ हो गया है. वर्शन 1.0.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DefaultMonotonicFrameClockके इस्तेमाल पर रोक लगा दी गई है.MonotonicFrameClockके बिनाwithFrameNanosयाRecomposer.runRecomposeAndApplyChangesको कॉल करने पर, अबIllegalStateExceptionदिखेगा. (I4eb0d)
वर्शन 1.0.0-beta02
10 मार्च, 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02 रिलीज़ हो गया है. वर्शन 1.0.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई (I6aa29, b/174531520) के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें
- navigation-compose के डेस्टिनेशन में इस्तेमाल किए जाने पर,
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 Beta का पहला वर्शन है.
एपीआई में हुए बदलाव
Recomposer.runRecomposeConcurrentlyAndApplyChangesजोड़ें मुख्य फ़्रेम लूप से बाहर, अमान्य कंपोज़िशन को फिर से कंपोज़ करने के लिए एक्सपेरिमेंटल एपीआई. (I342d0)- @ReadOnlyComposable के तौर पर मार्क किए गए किसी भी कंपोज़ेबल की पुष्टि अब कंपाइल-टाइम पर की जाती है. इससे यह पक्का किया जाता है कि वे सिर्फ़ अन्य @ReadOnlyComposables को कॉल करें (I58961)
compositionLocalOfऔरstaticCompositionLocalOfके लिएdefaultFactoryकी जानकारी देना अब ज़रूरी है. पहले यह जानकारी देना ज़रूरी नहीं था.इस बदलाव से, ऐसे नॉन-नलेबल टाइप के लिए संभावित टाइप गड़बड़ी हट जाती है जिनके लिए कोई डिफ़ॉल्ट फ़ैक्ट्री नहीं दी गई थी. इससे पहले, यह नॉन-नलेबल टाइप के लिए शून्य रेफ़रंस देता था.
शून्य वैल्यू वाले टाइप के लिए,
{ null }को डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल करें.हमारा सुझाव है कि नॉन-नलेबल टाइप के साथ लोकल का इस्तेमाल न करें. हालांकि, ऐसा तब किया जा सकता है, जब कोई डिफ़ॉल्ट वैल्यू दी जा सकती हो. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो
defaultFactoryलैंबडा को एक अपवाद दिखाना चाहिए. हालांकि, अपवाद का मतलब है कि स्थानीय स्तर पर काम करने वाले लोगों को इस बात पर निर्भर रहना होगा कि यह सुविधा उपलब्ध कराई गई है या नहीं. टाइप सिस्टम इसे लागू नहीं करता है. (Ifbd2a)डिप्रेकेट किए गए सिंबल को कंपोज़ रनटाइम (I3252c) से हटा दिया गया है
emptyContent()के इस्तेमाल पर रोक लगा दी गई है और इसे हटा दिया गया है. इसके बजाय,{}का इस्तेमाल करें. (Idb33f, b/179432510)Providers का नाम बदलकर CompositionLocalProvider कर दिया गया है
- Composition कंस्ट्रक्टर अब key पैरामीटर स्वीकार नहीं करता है. साथ ही, इसे बंद कर दिया गया है.
- currentCompositeKeyHash को, कंपोज़ेबल टॉप लेवल फ़ंक्शन के बजाय कंपोज़ेबल टॉप लेवल प्रॉपर्टी में बदल दिया गया है.
- CompositionData और CompositionGroup को androidx.compose.runtime.tooling नेमस्पेस में ले जाया गया है
- ComposableLambda को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- ComposableLambdaN को कॉन्क्रीट क्लास के बजाय इंटरफ़ेस बना दिया गया है. साथ ही, अब इसमें टाइप पैरामीटर नहीं हैं.
- snapshotFlow फ़ंक्शन को androidx.compose.runtime नेमस्पेस में ले जाया गया है
- SnapshotMutationPolicy के मर्ज करने के तरीके को अब एक्सपेरिमेंट के तौर पर इस्तेमाल नहीं किया जा सकता
- @TestOnly टॉप लेवल के clearRoots फ़ंक्शन को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- keySourceInfoOf और resetSourceInfo फ़ंक्शन हटा दिए गए हैं. अब इनकी ज़रूरत नहीं है.
- Composer.collectKeySourceInformation को हटा दिया गया है. अब इसकी ज़रूरत नहीं है.
- isJoinedKey, joinedKeyLeft, और joinedKeyRight तरीकों को हटा दिया गया है. अब इनकी ज़रूरत नहीं है.
- कई टॉप लेवल एपीआई को अलग-अलग फ़ाइलों में ले जाया गया है और उन्हें फिर से व्यवस्थित किया गया है. Kotlin के फ़ाइल क्लास सिमैंटिक की वजह से, इससे बाइनरी कंपैटिबिलिटी पर असर पड़ेगा, लेकिन सोर्स कंपैटिबिलिटी पर नहीं. इसलिए, ज़्यादातर उपयोगकर्ताओं को इससे कोई समस्या नहीं होनी चाहिए.
- (I99b7d, b/177245490)
SnapshotStateObserver अब एक्सपेरिमेंटल नहीं है (Id2e6a)
पहले बंद किए गए कुछ एपीआई मिटा दिए गए हैं (Ice5da, b/178633932)
Material API में ये बदलाव किए गए हैं:
- Top/BottomAppBar में contentPadding पैरामीटर जोड़ा गया है, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके.
- BackdropScaffold में पैरामीटर का क्रम बदला गया है, ताकि एपीआई के दिशा-निर्देशों का पालन किया जा सके. इन दिशा-निर्देशों के मुताबिक, ज़रूरी पैरामीटर को वैकल्पिक पैरामीटर से पहले रखा जाता है.
- BottomNavigationItem में
iconपैरामीटर कोselectedऔरonClickके बाद ले जाया गया. - BottomNavigationItem में
alwaysShowLabelsपैरामीटर का नाम बदलकरalwaysShowLabelकर दिया गया है. - कुछ कॉम्पोनेंट में
bodyContentपैरामीटर का नाम बदलकर सिर्फ़contentकर दिया गया है. ButtonDefaults.buttonColors()में पैरामीटर का क्रम बदला गया है. कृपया ध्यान दें कि पैरामीटर के टाइप में कोई बदलाव नहीं हुआ है. इसलिए, आपके कोड में कोई गड़बड़ी नहीं होगी. कृपया पक्का करें कि आपने नाम वाले पैरामीटर का इस्तेमाल किया हो या आपने क्रम को मैन्युअल तरीके से अपडेट किया हो. ऐसा न करने पर, आपका कोड पहले की तरह काम नहीं करेगा.secondaryVariantपैरामीटर कोdarkColors()में जोड़ा गया. आम तौर पर, यह रंग गहरे रंग वाली थीम मेंsecondaryके जैसा ही होता है. हालांकि, इसे एक जैसा रखने और अपनी पसंद के मुताबिक बनाने के लिए जोड़ा जाता है.- ElevationDefaults और animateElevation() को सार्वजनिक एपीआई से हटा दिया गया है, क्योंकि इनका इस्तेमाल आम तौर पर नहीं किया जाता था / ये काम के नहीं थे.
Sliderमें मौजूदonValueChangeEndका नाम बदलकरonValueChangeFinishedकर दिया गया है. साथ ही, इसे नल वैल्यू के तौर पर सेट किया जा सकता है.- एक जैसा नाम रखने के लिए,
Snackbarमें मौजूदtextपैरामीटर का नाम बदलकरcontentकर दिया गया है. DropdownMenuItemमेंcontentPaddingपैरामीटर जोड़ा गया, ताकि डिफ़ॉल्ट पैडिंग को पसंद के मुताबिक बनाया जा सके. साथ ही,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)
- CompositionReference का नाम बदलकर CompositionContext कर दिया गया है (I53fcb)
- ComponentActivity.setContent को androidx.activity:activity-compose मॉड्यूल में androidx.activity.compose.setContent पर ले जाया गया है. (Icf416)
- Snapshot API को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम कर सके. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
- Ambients का नाम बदलकर, Ambient -> CompositionLocal के नाम से मैच किया गया. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब कंपोज़िशन लोकल का नाम LocalFoo है. (I2d55d)
- Ambient का नाम बदलकर CompositionLocal कर दिया गया है. साथ ही, ambientOf / staticAmbientOf का नाम बदलकर compositionLocalOf / staticCompositionLocalOf कर दिया गया है. इस बदलाव से, CompositionLocal का मकसद ज़्यादा साफ़ तौर पर समझ में आता है: यह कंपोज़िशन के लिए लोकल वैल्यू देने / पाने का एक तरीका है. CompositionLocal इंस्टेंस में
Localप्रीफ़िक्स होना चाहिए. जैसे, val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - takeMutableSnapshot और takeSnapshot को Snapshot के कंपैनियन मेथड के तौर पर इस्तेमाल किया जा सकता है. (I91f19)
@ComposableContractकी जगह अब तीन अन्य एनोटेशन का इस्तेमाल किया जाता है.@ComposableContract(restartable = false)को@NonRestartableComposableबनाया गया है@ComposableContract(readonly = true)को@ReadOnlyComposableबनाया गया है@ComposableContract(preventCapture = true)को@DisallowComposableCallsबनाया गया है@ComposableContract(tracked = true)को हटा दिया गया है. (I60a9d)emptyContent() और (@Composable () -> Unit).orEmpty() यूटिलिटी को बंद कर दिया गया है. ऐसा इसलिए, क्योंकि अब इनसे परफ़ॉर्मेंस पर कोई फ़र्क़ नहीं पड़ता या इनकी कोई वैल्यू नहीं है (I0484d)
snapshotFlowऔरwithMutableSnapshotअब एक्सपेरिमेंटल नहीं हैं (I6a45f)अब रीकंपोज़र बंद किए जा सकते हैं. बंद किए गए कंपोज़र, कंपोज़िशन चाइल्ड कोरूटीन के पूरा होने तक फिर से कंपोज़ करना जारी रखेंगे. Recomposer.shutDown का नाम बदलकर cancel कर दिया गया है, ताकि इसे close से अलग किया जा सके. (Ib6d76)
compose:runtime-dispatchआर्टफ़ैक्ट अब काम नहीं करता है. MonotonicFrameClock को अब compose:runtime में देखा जा सकता है. साथ ही, AndroidUiDispatcher को compose:ui में देखा जा सकता है. (Ib5c36)Compose कंपाइलर प्लगिन जिस एपीआई को टारगेट करता है उसे रिफ़ैक्टर किया गया है. अब यह कॉंक्रीट क्लास के बजाय इंटरफ़ेस का इस्तेमाल करता है. इंटरफ़ेस अब टाइप पैरामीटर का इस्तेमाल नहीं करता.
यह एक इंटरनल बदलाव है. इससे सोर्स कोड के साथ काम करने की सुविधा पर कोई असर नहीं पड़ना चाहिए. हालांकि, यह बाइनरी ब्रेकिंग चेंज है. (I3b922, b/169406779)
SnapshotMutableState को पेश किया गया (Icfd03)
DisposableEffectDisposable का नाम बदलकर DisposaleEffectResult कर दिया गया है (Ica7c6)
Recomposer.current() को हटाया गया. [Abstract]ComposeView अब डिफ़ॉल्ट रूप से, विंडो के लिए ViewTreeLifecycleOwner की मदद से बनाए गए, विंडो के दायरे वाले Recomposers का इस्तेमाल करता है. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और withFrameNanos पर आधारित ऐनिमेशन टिक रुक जाते हैं. (I38e11)
Recomposer.runningRecomposers अब read-only RecomposerInfo का ग्लोबल StateFlow उपलब्ध कराता है. इससे प्रोसेस में चल रही कंपोज़िशन की स्थिति को देखा जा सकता है. Recomposer.current() के बजाय इस एपीआई का इस्तेमाल करें. यह अब काम नहीं करता. (If8ebe)
DisposableEffectDisposable का नाम बदलकर DisposaleEffectResult कर दिया गया है (I3ea68)
वर्शन 1.0.0-alpha11
28 जनवरी, 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- onCommit, onDispose, और onActive को SideEffect और DisposableEffect API के पक्ष में बंद कर दिया गया है (If760e)
- emit() एपीआई और सभी ओवरलोड को बंद कर दिया गया है. इनका नाम बदलकर ComposeNode कर दिया गया है. एपीआई एक जैसे हैं. हालांकि, Compose (I4137b) के नाम रखने के नियमों का पालन करने के लिए, इनका नाम अलग रखा गया है
- invalidate और compositionReference() को अब बंद कर दिया गया है. इनके बजाय, currentRecomposeScope और rememberCompositionReference का इस्तेमाल करें. (I583a8)
RememberObserver, CompositionLifecycleObserver की जगह लेता है. साथ ही, CompositionLifecycleObserver अब काम नहीं करता.
RememberObserver,CompositionLifecycleObserverकी जगह इस्तेमाल किया जाता है. इसमें सिमैंटिक में बदलाव किया गया है और तरीकों के नाम बदले गए हैं. जिन ऑब्जेक्ट को सिर्फ़ एक बार याद किया जाता है उनके लिए, नए एपीआई पर अपने-आप स्विच किया जा सकता है. यह तरीका सुझाया गया है और इसे जारी रखा जाना चाहिए. हालांकि, अगर किसी कंपोज़िशन में किसी रेफ़रंस को एक से ज़्यादा बार याद किया गया है, तो हर रेफ़रंस के लिएonRememberedको कॉल किया जाता है. वहीं,onEnterको सिर्फ़ एक बार कॉल किया जाता है.onEnterwas called multiple time if the object was used in subcompositions, such asWithConstraintsandScaffoldmaking the singleonEntercall guarantee unreliable and it was removed forRememberObserver.RememberObserver,onAbandonedको जोड़ता है. इसे तब कॉल किया जाता है, जबRememberObserverइंस्टेंस कोrememberको पास किए गए कॉलबैक से वापस कर दिया जाता है, लेकिन कंपोज़िशन की स्थिति में इसे याद नहीं रखा जाता. इसलिए,onRememberedको कभी कॉल नहीं किया जाएगा. ऐसा तब हो सकता है, जब कोई अपवाद कंपोज़िशन को पूरा होने से पहले ही खत्म कर देता है या कंपोज़िशन को इसलिए खारिज कर दिया जाता है, क्योंकि जिस स्थिति के लिए कंपोज़िशन जनरेट की जा रही थी वह अब मौजूद नहीं है या अब उसकी ज़रूरत नहीं है. अगर ऊपर दिए गए एक रेफ़रंस वाले सुझाव के बादRememberObserverइंस्टेंस, किसी बाहरी संसाधन को ट्रैक कर रहा है, तोonForgottenऔरonAbandoned, दोनों से पता चलता है कि अब संसाधन की ज़रूरत नहीं है. अगर ऑब्जेक्ट,onRememberedमें शुरू किए गए काम या असाइन किए गए संसाधनों को ट्रैक कर रहा है, तोonAbandonedको अनदेखा किया जा सकता है. ऐसा इसलिए, क्योंकि अगरonRememberedको कॉल किया जाता है, तो इसे कॉल नहीं किया जाएगा. (I02c36)collectAsState()फ़ंक्शन को इनलाइन (Ia73e4) के तौर पर मार्क न करें
गड़बड़ियां ठीक की गईं
- WithConstraints को BoxWithConstraints के तौर पर फिर से बनाया गया है और इसे foundation.layout में ले जाया गया है. (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)
ComposeView एपीआई को बड़ा करें, ताकि Compose पर आधारित व्यू को रीसाइकल किया जा सके. साथ ही, कंपोज़िशन को डिस्पोज़ किया जा सके, ताकि बाद में उसे फिर से बनाया जा सके. विंडो के स्कोप वाले Recomposer और CompositionReference को इंस्टॉल करने और खोजने के लिए एपीआई जोड़े गए हैं, ताकि चाइल्ड कंपोज़िशन बनाई जा सकें.
[Abstract]ComposeViews के कंपोज़िशन डिस्पोज़ल की रणनीति को कॉन्फ़िगर करने के लिए, ViewCompositionStrategy जोड़ें; डिफ़ॉल्ट व्यवहार, विंडो के अलग होने पर डिस्पोज़ करना है. (I860ab)
गड़बड़ियां ठीक की गईं
- Recomposer अब अपनी मौजूदा स्थिति का फ़्लो दिखाता है. इससे इसकी गतिविधि और इससे जुड़े इफ़ेक्ट की गतिविधि को मॉनिटर किया जा सकता है. (Ifb2b9)
- अब keyEvent.nativeKeyEvent (I87c57, b/173086397) के ज़रिए, नेटिव keyEvent को ऐक्सेस किया जा सकता है
वर्शन 1.0.0-alpha09
16 दिसंबर, 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SlotTable, SlotReader, और SlotWriter को सार्वजनिक एपीआई से हटा दिया गया है. इन्हें पहले InternalComposeAPI के तौर पर मार्क किया गया था. अब ये कंपोज़ मॉड्यूल के इंटरनल हैं.
कंपोज़िशन की जानकारी निकालने के लिए, ui-tooling API की जगह CompositionData और CompositionGroup को जोड़ा गया है. ये सार्वजनिक हैं, लेकिन इनका इस्तेमाल ui-tooling API के बाहर नहीं किया जा सकता. ऐसा इसलिए, क्योंकि ये ui-tooling API को ऐसी जानकारी देते हैं जिसे वह समझता है (I31a9c)
Applier क्लास को अब (Id85b0) नहीं माना जाता
Applierइंटरफ़ेस को बदल दिया गया है, ताकि ट्री को टॉप-डाउन के बजाय बॉटम-अप तरीके से आसानी से बनाया जा सके.insert()तरीके का नाम बदलकरinsertTopDown()कर दिया गया है.insertBottomUp()नाम का एक नया तरीका जोड़ा गया है.लागू करने वाला व्यक्ति,
insertTopDown()याinsertBottomUp()का इस्तेमाल करके, उस ट्री में नोड डालता है जिसे वह बदल रहा है. यह इस बात पर निर्भर करता है कि कौनसी कार्रवाई बेहतर तरीके से काम करती है.कुछ ट्री, जैसे कि
LayoutNodeऔरView, को टॉप-डाउन की तुलना में बॉटम-अप तरीके से बनाना ज़्यादा आसान होता है. इस बदलाव से पहले, बॉटम-अप को लागू करने के लिए इंसर्ट के स्टैक की ज़रूरत होती थी. इसे हर ऐप्लिकेशन में कॉपी करना पड़ता था. साथ ही, परफ़ॉर्मेंस के लिए बॉटम-अप कंस्ट्रक्शन की ज़रूरत होती थी. इस बदलाव के साथ,ApplierओवरराइडinsertBottomUp()का इस्तेमाल करके ट्री को बॉटम-अप तरीके से बनाया जा सकता है. वहीं,insertTopDown()का इस्तेमाल करके ट्री को टॉप-डाउन तरीके से बनाया जा सकता है. (Icbdc2)Compose, प्रॉपर्टी गेटर के साथ काम करता है. इनकी मदद से, कंपोज़ेबल फ़ंक्शन को कॉल किया जा सकता है. यह सुविधा बंद नहीं की जा रही है. हालांकि, किसी प्रॉपर्टी के गेटर को @Composable के तौर पर एलान करने का सिंटैक्स बदल रहा है.
अब इस काम के लिए, प्रॉपर्टी को एनोटेट करने वाले सिंटैक्स का इस्तेमाल नहीं किया जा सकता:
@Composable val someProperty: Int get() = ...अब इस काम के लिए सही सिंटैक्स यह है कि प्रॉपर्टी के गेटर को एनोटेट किया जाए:
val someProperty: Int @Composable get() = ...दोनों सिंटैक्स कुछ समय तक काम करेंगे. हालांकि, बाद में काम न करने वाला पुराना सिंटैक्स, कंपाइल करने से जुड़ी गड़बड़ी के तौर पर दिखेगा. (Id9197)
गड़बड़ियां ठीक की गईं
- AndroidOwner ने इंटरनल टेस्ट के लिए उपलब्ध कराया (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) को इंटरनल बनाया गया (Id724a)
वर्शन 1.0.0-alpha08
2 दिसंबर, 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कंपोज़ेबल लैम्डा पैरामीटर के नाम और पोज़िशन के लिए, लिंट चेक जोड़ा गया है. इससे Compose के दिशा-निर्देशों के मुताबिक, एक जैसा कोड लिखने में मदद मिलेगी.
इसके अलावा, कुछ एपीआई को माइग्रेट किया गया है. इनमें से कुछ के ट्रेलिंग लैम्डा के लिए
childrenका इस्तेमाल किया गया था. इन्हें लिंट चेक और दिशा-निर्देशों के मुताबिकcontentपर माइग्रेट किया गया है. (Iec48e) - Recomposer अब EmbeddingContext को स्वीकार नहीं करता है. शेड्यूल करने से जुड़ी ज़रूरी डिपेंडेंसी, effectCoroutineContext से मिलती हैं. FrameManager अब काम नहीं करता. प्लैटफ़ॉर्म इंटिग्रेशन को अपने ग्लोबल स्नैपशॉट हैंडलिंग को शुरू करना चाहिए. (I02369)
- RestorableStateHolder.withRestorableState फ़ंक्शन का नाम बदलकर RestorableStateProvider कर दिया गया है (I66640)
गड़बड़ियां ठीक की गईं
Ambientसफ़िक्स वाले, बंद किए गए ऐंबिएंट को हटा दिया गया है. साथ ही, उन्हें ऐंबिएंट से शुरू होने वाली नई प्रॉपर्टी से बदल दिया गया है. ये प्रॉपर्टी, अन्य ऐंबिएंट और Compose API के दिशा-निर्देशों के मुताबिक हैं. (I33440)- Remove old ui-test module and its stubs (I3a7cb)
वर्शन 1.0.0-alpha07
11 नवंबर, 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
एपीआई में हुए बदलाव
@UnionTypeएनोटेशन का इस्तेमाल अब नहीं किया जा सकता (I57cde)- provideDefault को, provide के विकल्प के तौर पर जोड़ा गया था. इसका इस्तेमाल, परिवेश की जानकारी देने के लिए किया जा सकता है. इसका इस्तेमाल, परिवेश की उन वैल्यू को तय करने के लिए किया जा सकता है जो सिर्फ़ तब सेट की जाएंगी, जब परिवेश की कोई वैल्यू पहले से मौजूद न हो. (Id6635, b/171024925)
- SideEffect और DisposableEffect API के साथ एक जैसा नाम रखने के लिए, LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है. सबसे सही तरीकों को बढ़ावा देने के लिए, LaunchedEffect में subject पैरामीटर के बिना इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
- Applier में अब onBeginChanges/onEndChanges कॉलबैक हैं. इन्हें तब शुरू किया जाता है, जब कंपोज़र ट्री में बदलाव करना शुरू करता है या बदलाव करने की प्रोसेस पूरी हो जाती है. अगर ज़रूरत हो, तो इनका इस्तेमाल रिसॉर्स मैनेजमेंट के लिए किया जा सकता है. (Icf476)
- Recomposer को अब कंस्ट्रक्शन के समय CoroutineContext की ज़रूरत होती है (Ic4610)
- SlotTable के इंटरनल इंप्लीमेंटेशन में बदलाव किए गए हैं. इससे सार्वजनिक एपीआई पर कोई असर नहीं पड़ेगा. (If9828)
- rxjava2 के ऐसे अडैप्टर हटा दिए गए हैं जो शुरुआती वैल्यू नहीं लेते थे (Idb72f)
गड़बड़ियां ठीक की गईं
- foundation.Text को बंद कर दिया गया है और इसे material.Text से बदल दिया गया है. किसी थीम से वैल्यू का इस्तेमाल न करने वाले, सामान्य टेक्स्ट एपीआई के लिए androidx.compose.foundation.BasicText देखें. (If64cb)
- BaseTextField अब काम नहीं करता है. इसके बजाय, BasicTextField का इस्तेमाल करें. (I896eb)
- लेआउट से जुड़े कई सिंबल को androidx.compose.ui से androidx.compose.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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Recomposer अब एक CompositionReference और मान्य कंपोज़िशन पैरंट है. अब कम जगहों पर Explicit Recomposer की ज़रूरत होगी. (I4036f)
- SideEffect में DisposableEffect counterpart API जोड़ा गया है. यह onCommit-with-params की भूमिका निभाता है, लेकिन इसमें onDispose की ज़रूरत होती है.
- rememberUpdatedState API जोड़ा गया है, ताकि रीयूज़ेबल इफ़ेक्ट या लॉन्च्ड टास्क जैसी लंबी चलने वाली प्रोसेस में, रीयूज़ेबल कंपोज़िशन से डेटा पब्लिश किया जा सके.
- (Id50b9)
- MutableVector अब RandomAccess को लागू करता है (I85d73, b/170461551)
- कंपोज़िशन के साइड इफ़ेक्ट को कंपोज़िशन से मैनेज किए जा रहे ऑब्जेक्ट पर लागू करने के लिए, SideEffect कंपोज़ेबल जोड़ा गया. SideEffect को onCommit कंपोज़ेबल को बदलने के लिए बनाया गया है. (Ia77c2)
- RestorableStateHolder का नया एक्सपेरिमेंटल एपीआई. यह [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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Experimental Modifier.pointerInput suspending input modifier (Ia77d2)
- LazyColumn/Row की स्क्रोलिंग परफ़ॉर्मेंस को बेहतर बनाया गया है. इसके लिए, हर स्क्रोल पर सबकंपोज़िशन में कम काम किया जाता है. Composition क्लास के लिए, नया hasInvalidations() तरीका जोड़ा गया है. Recomposer के hasPendingChanges() तरीके का नाम बदलकर hasInvalidations() कर दिया गया है (Ib2f32, b/168293643, b/167972292, b/165028371)
- कंपोज़िशन से कोरूटीन लॉन्च करने के लिए, produceState API जोड़ें. इससे समय के साथ एक
State<T>वैल्यू अपडेट होती है (Id4a57) - launchInComposition का नाम बदलकर LaunchedTask कर दिया गया है, ताकि यह Compose API के दिशा-निर्देशों (I99a8e) के मुताबिक हो
- कस्टम लेआउट में place() कॉल का क्रम अब चाइल्ड विजेट (Ibc9f6) के ड्रॉइंग ऑर्डर को तय करता है
वर्शन 1.0.0-alpha04
1 अक्टूबर, 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- OwnerScope जोड़ा गया है, ताकि लेआउट और ड्रॉइंग के ऑब्ज़र्वेशन स्कोप को इकट्ठा किया जा सके. ऐसा तब किया जाता है, जब ये स्कोप अब मान्य नहीं रहते. (Ic4cf8)
- गणना के आधार पर State ऑब्जेक्ट बनाने के लिए, derivedStateOf API जोड़ा गया है. यह अन्य State ऑब्जेक्ट को पढ़ सकता है और उनसे जानकारी ले सकता है (If758b)
- SnapshotStateObserver के लिए TestOnly API जोड़ा गया (I6e2a9)
गड़बड़ियां ठीक की गईं
- 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) कंपोज़ेबल फ़ंक्शन के लिए कॉलिंग कन्वेंशन बदल गया है. यह बाइनरी को नुकसान पहुंचाने वाला बदलाव है. Compose कंपाइलर प्लगिन के इस वर्शन के साथ काम करने के लिए, सभी लाइब्रेरी को फिर से कंपाइल करना होगा.
इस बदलाव से, सोर्स लेवल पर कोई बड़ा बदलाव नहीं होता, क्योंकि सिर्फ़ कंपाइलर एपीआई में बदलाव किया गया है. इसके लिए, साफ़ तौर पर ऑप्ट इन करना ज़रूरी है. (I7afd2, b/158123185)
EmbeddingContext (I7b9be) से शेड्यूल करने के तरीके हटाए गए
onPreCommit का इस्तेमाल अब नहीं किया जा सकता. onCommit में अब onPreCommit की तरह काम करने की सुविधा है.
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 के उन कॉल को हटा दिया गया है जो अब इस्तेमाल में नहीं हैं.
इंटरनल कंपोज़ एपीआई में बदलाव किया गया है, ताकि
mutableStateof()(I80ba6) जैसे स्टेट ऑब्जेक्ट को ट्रैक करने के लिए, ओवरहेड की मात्रा को कम किया जा सकेअब
state { ... }कंपोज़ेबल का इस्तेमाल नहीं किया जा सकेगा. इसके बजाय,remember { mutableStateOf(...) }को साफ़ तौर पर कॉल किया जा सकेगा. इससे स्टेट मैनेजमेंट के लिए, एपीआई की कुल सतह और कॉन्सेप्ट की संख्या कम हो जाती है. साथ ही, यह क्लास प्रॉपर्टी डेलिगेशन के लिएby mutableStateOf()पैटर्न से मेल खाता है. (Ia5727)Flow.collectAsState अब Dispatchers.Main पर डिफ़ॉल्ट रूप से सेट होने के बजाय, कंपोज़िशन से ही डिफ़ॉल्ट डिस्पैचर तय करता है. (I9c1d9)
फ़ॉर लूप में ऐसी किसी चीज़ का इस्तेमाल करने पर क्रैश होने की समस्या ठीक की गई है जो स्थिति को सेव करती है. अब savedInstanceState() में एक ही कुंजी का इस्तेमाल किया जा सकता है. UiSavedStateRegistry का एपीआई, इस नई ज़रूरत के हिसाब से बदल दिया गया है (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
गड़बड़ियां ठीक की गईं
emitViewका अब इस्तेमाल नहीं किया जा सकता. अगर हो सके, तो Compose में व्यू दिखाने के लिएAndroidViewका इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और ViewGroup को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक नहीं होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ न हों. इस मामले में, 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/equality.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 जोड़ा गया है. इससे MonotonicFrameClock को AnimationClockObservable के तौर पर इस्तेमाल किया जा सकता है. इससे नई को-रूटीन पर आधारित क्लॉक और अब भी कॉल बैक पर आधारित क्लॉक का इस्तेमाल करने वाले एपीआई के बीच के अंतर को कम किया जा सकता है.
ManualAnimationClock के MonotonicFrameClock के बराबर अब ManualFrameClock है. (I111c7, b/161247083)
Modifier.stateDraggable को पूरी तरह से बदल दिया गया है और इसका नाम बदलकर Modifier.swipeable कर दिया गया है. SwipeableState नाम की नई क्लास जोड़ी गई है. साथ ही, DrawerState और BottomDrawerState को फिर से फ़ैक्टर किया गया है, ताकि वे इससे इनहेरिट कर सकें. [Modal/Bottom]DrawerLayout अब onStateChange पैरामीटर नहीं लेता है. (I72332, b/148023068)
Modifier.plus का इस्तेमाल अब नहीं किया जा सकता. इसके बजाय, Modifier.then का इस्तेमाल करें. 'फिर' शब्द से क्रम का ज़्यादा मज़बूत सिग्नल मिलता है. साथ ही, इससे
Modifier.padding().background() + anotherModifierटाइप करने पर पाबंदी लगती है. इससे चेन टूट जाती है और इसे पढ़ना मुश्किल हो जाता है (Iedd58, b/161529964)SubcomposeLayout को जोड़ा गया है. यह एक लो लेवल प्रिमिटिव है. इसकी मदद से, मेज़रमेंट के दौरान चाइल्ड कॉम्पोनेंट बनाए जा सकते हैं. ऐसा तब किया जाता है, जब हमें सबट्री कंपोज़िशन के लिए कुछ ऐसी वैल्यू का इस्तेमाल करना हो जो मेज़रमेंट के दौरान ही उपलब्ध होती हैं. उदाहरण के लिए, WithConstraints को SubcomposeLayout का इस्तेमाल करके लागू नहीं किया जाता. (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 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़ा अपडेट
- Compose के
0.1.0-dev15वर्शन का इस्तेमाल करने के लिए, आपको अपनी डिपेंडेंसी अपडेट करनी होंगी. इसके लिए, डिपेंडेंसी तय करना सेक्शन में ऊपर दिखाए गए नए कोड स्निपेट का इस्तेमाल करें.
एपीआई में हुए बदलाव
@Modelएनोटेशन अब काम नहीं करता. विकल्प के तौर पर, state और mutableStateOf का इस्तेमाल करें. यह फ़ैसला, काफ़ी सोच-विचार करने के बाद लिया गया है.अनुरोध करने की वजह
वजह में ये शामिल हैं. हालांकि, इनके अलावा और भी वजहें हो सकती हैं:
- इससे एपीआई के सर्फ़ेस एरिया और हमें जिन कॉन्सेप्ट के बारे में बताना है उनकी संख्या कम हो जाती है
- यह टूलकिट, अन्य टूलकिट (Swift UI, React, Flutter) के साथ ज़्यादा आसानी से काम करती है
- इस फ़ैसले को बदला जा सकता है. हम बाद में
@Modelको फिर से चालू कर सकते हैं. - इससे,
@Modelको कॉन्फ़िगर करने से जुड़े मुश्किल सवालों के जवाब देने और खास मामलों में इसके इस्तेमाल से जुड़ी समस्याओं को हल करने में मदद मिलती है @Modelडेटा क्लास, equals, hashcode वगैरह- मैं कुछ प्रॉपर्टी को “निगरानी में” कैसे रखूं और कुछ को नहीं?
- मैं ऑब्ज़र्वेशन में इस्तेमाल की जाने वाली स्ट्रक्चरल और रेफ़रेंशियल समानता के बारे में कैसे बताऊं?
- सिस्टम में “मैजिक” को कम करता है. इससे इस बात की संभावना कम हो जाएगी कि कोई व्यक्ति यह मान ले कि सिस्टम उससे ज़्यादा स्मार्ट है. जैसे, उसे सूची में अंतर करने का तरीका पता है
- इससे ऑब्ज़र्वेशन को ज़्यादा बारीकी से समझने में मदद मिलती है.
- इससे क्लास में मौजूद वैरिएबल को प्रॉपर्टी में बदलने की प्रोसेस बेहतर होती है
- इससे, राज्य के हिसाब से मैन्युअल तरीके से ऑप्टिमाइज़ेशन करने के अवसर मिलते हैं
- यह अन्य सिस्टम के साथ ज़्यादा बेहतर तरीके से काम करता है. साथ ही, यह “बदलाव की अनुमति देने वाले स्टेट को स्वीकार करने” के बारे में, बदलाव न किए जा सकने वाले स्टेट के बारे में भ्रम को कम करता है
माइग्रेशन से जुड़ी जानकारी
@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) } ) }दूसरा विकल्प: mutableStateOf और प्रॉपर्टी डेलिगेट का इस्तेमाल करना
Kotlin के प्रॉपर्टी डेलिगेट और
mutableStateOfएपीआई की मदद से, इस तरीके को आसान बनाया गया है.mutableStateOfएपीआई की मदद से, कंपोज़िशन के बाहर MutableState इंस्टेंस बनाए जा सकते हैं. असल में, ओरिजनल क्लास की सभी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/143263925, b/139653744)
यह Compose के कंपाइलर की कोड जनरेशन रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर, कंपोज़ेबल फ़ंक्शन को कॉल में बदल देता था. इस बदलाव के बाद, हम कंपोज़ेबल फ़ंक्शन के मुख्य हिस्से को बदल देते हैं. हालांकि, कॉलसाइट में ज़्यादातर कोई बदलाव नहीं होता.
इसका मतलब है कि कंपोज़ रनटाइम के साथ कम्यूनिकेट करने वाला ज़्यादातर लॉजिक, कॉलसाइट के बजाय फ़ंक्शन बॉडी की शुरुआत में होता है.
यह बदलाव, कंपोज़ के सभी इस्तेमाल के लिए सोर्स के साथ काम करने वाला होना चाहिए. इस बदलाव के बाद, कंपोज़ का इस्तेमाल करने वाले ज़्यादातर लोगों को कोड अपडेट करने की ज़रूरत नहीं होगी.
इस काम को पूरा करने के लिए, सभी कंपोज़ेबल फ़ंक्शन के JVM सिग्नेचर में बदलाव किया गया है. एक पैरामीटर स्वीकार करने वाले कंपोज़ेबल फ़ंक्शन को, तीन पैरामीटर स्वीकार करने वाले फ़ंक्शन में बदल दिया जाता है. अतिरिक्त पैरामीटर, कंपोज़र और ‘key’ पूर्णांक होते हैं. यह एक बिटमास्क पूर्णांक होता है, जिसका इस्तेमाल कॉल के ज़रिए मेटाडेटा को आगे बढ़ाने के लिए किया जाता है.
Compose अब डिफ़ॉल्ट आर्ग्युमेंट को भी कंपोज़ेबल फ़ंक्शन में बदल देता है. यह ऐसा फ़ंक्शन के सिंथेटिक डिफ़ॉल्ट ओवरलोड को जोड़े बिना करता है. इसलिए, इस बदलाव से कम फ़ंक्शन तय किए जाएंगे.
इस अपडेट की वजह से, जान-बूझकर किए गए व्यवहार में ये बदलाव हुए हैं:
- कुछ कॉल में, पहले की तुलना में अब कम समय लगेगा
- डिफ़ॉल्ट आर्ग्युमेंट एक्सप्रेशन में कंपोज़ेबल एक्सप्रेशन को अब सही तरीके से सब्सक्राइब किया जाता है और मैनेज किया जाता है
इस काम में कुछ ऑप्टिमाइज़ेशन शामिल थे: 1. पैरामीटर की तुलना के नतीजे, कॉल ग्राफ़ के ज़रिए अन्य कंपोज़ेबल फ़ंक्शन तक पहुंचाए जाते हैं. इससे रनटाइम में तुलनाएं कम होंगी, स्लॉट टेबल का साइज़ कम होगा. साथ ही, कंपोज़ेबल फ़ंक्शन को ज़्यादा बार स्किप किया जाएगा. पहले इन फ़ंक्शन को स्किप नहीं किया जाता था 2. जिन पैरामीटर को कंपाइल टाइम पर “स्टैटिक” माना जाता है उनकी तुलना अब रनटाइम में नहीं की जाती है और न ही उन्हें सेव किया जाता है. इससे तुलनाओं की संख्या कम हो जाती है और स्लॉट टेबल का साइज़ भी कम हो जाता है. 3. जनरेट किए गए ग्रुप की संख्या को कम करने के लिए, फ़ंक्शन के मुख्य हिस्से के कंट्रोल फ़्लो स्ट्रक्चर का इस्तेमाल किया जाता है. इससे स्लॉट टेबल का साइज़ कम हो जाता है और रनटाइम 4 के लिए कम काम होता है. अगर फ़ंक्शन के मुख्य हिस्से में, डिसपैच और रिसीवर पैरामीटर का इस्तेमाल नहीं किया जाता है, तो फ़ंक्शन को स्किप किया जा सकता है या नहीं, यह तय करते समय इन पैरामीटर को शामिल नहीं किया जाता है.
ज़्यादातर बड़े बदलाव, उन एपीआई के लिए किए गए हैं जिन्हें कंपाइलर सीधे तौर पर टारगेट करता है. हालांकि, Compose के सामान्य इस्तेमाल पर इसका कोई असर नहीं पड़ेगा: 1. Composer::startExpr को हटा दिया गया है 2. Composer::endExpr को हटा दिया गया है 3. Composer::call को बंद कर दिया गया है 4.
keyके नॉन-वैरआर्ग ओवरलोड हटा दिए गए हैं. आगे सेvarargवर्शन का इस्तेमाल करें. 5. पिवटल एनोटेशन को बंद कर दिया गया है. इसके बजाय,keyका इस्तेमाल करें. 6. ScopeUpdateScope::updateScope को बदलकर, Function1 के बजाय Function3 का इस्तेमाल किया गया 7. restartableFunction और restartableFunctionN को अपडेट किया गया, ताकि उनमें कंपाइल टाइम के अतिरिक्त पैरामीटर शामिल किए जा सकें (I60756, b/143464846)MutableVector (Icccf7) में sortWith और removeRange जोड़ा गया
CompositionLifecycleObserver (I24289) के लिए, डिफ़ॉल्ट तरीके से लागू करने की सुविधा जोड़ी गई
Applier को अब कंपोज़िशन (Ibe697) को हटाने के लिए, clear() तरीके की ज़रूरत होती है
MutableVector में asMutableList() जोड़ा गया है, ताकि इसे पूरी सूची कॉपी किए बिना ही सार्वजनिक एपीआई को पास किया जा सके. (I298df)
इवेंट के जवाब में जॉब लॉन्च करने के लिए, कंपोज़िशन में मैनेज किया गया CoroutineScope पाने के लिए, rememberCoroutineScope() जोड़ा गया. (I0e264)
MutableVector एक नया कलेक्शन है. यह किसी भी स्टैंडर्ड कलेक्शन इंटरफ़ेस को लागू नहीं करता है. यह कलेक्शन, अन्य ज़रूरी शर्तों के मुकाबले ज़्यादा तेज़ी से काम करता है. इसका इस्तेमाल सिर्फ़ इंटरनल तौर पर किया जा सकता है. (I8ebd6)
Kotlin Compose के वर्शन में समस्या से बचने के लिए,
StableMutableListऔरStableMutableMapको कुछ समय के लिए हटा दिया गया है. Compose को Kotlin के ऐसे वर्शन पर अपडेट करने के बाद इन इंटरफ़ेस को फिर से शामिल किया जाएगा जिसमें यह समस्या नहीं है.SnapshotStateListऔरSnapshotStateMapअब सार्वजनिक हैं. हालांकि,StableMutableListऔरStableMutableMapको वापस लाने के बाद, इन्हें बंद कर दिया जाएगा. (Ia7769)ऐनिमेशन की टाइमिंग के लिए, top-level withFrameNanos फ़ंक्शन जोड़ा गया (Ie34c5)
@Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) से बदलें (Id211e)
RestartableFunction और इससे जुड़े एपीआई का नाम बदलकर ComposableLambda वगैरह कर दिया गया है. इन एपीआई को सिर्फ़ कंपाइलर टारगेट करता था. इसलिए, इससे सोर्स लेवल की कंपैटिबिलिटी पर आम तौर पर कोई असर नहीं पड़ना चाहिए. नाम बदलने का मुख्य मकसद यह बताना था कि स्टैक ट्रेस (I7eb25) में दिखने पर यह क्लास बेहतर तरीके से क्या करती है
@Composable एनोटेशन अब क्लास पर मान्य नहीं है (Ia5f02)
Ambient<T>अब @Immutable के बजाय @Stable है (I0b4bb)इस बदलाव से पहले, अगर @Composable फ़ंक्शन में कंस्ट्रक्टर को कॉल किया जाता था, तो कंपोज़ कंपाइलर प्लगिन उसे इंटरसेप्ट कर लेता था. ऐसा तब होता था, जब (I5205a, b/158123804) मौजूद होता था
Recompose कंपोज़ेबल अब काम का ऐब्स्ट्रैक्शन नहीं है. ज़्यादातर रीकंपोज़िशन, MutableState असाइनमेंट की वजह से होने चाहिए. इससे ज़्यादा के लिए, हमारा सुझाव है कि आप
invalidateफ़ंक्शन का इस्तेमाल करके, मौजूदा स्कोप को फिर से कंपोज़ करें. (Ifc992)Observe अब एक उपयोगी ऐब्स्ट्रैक्शन नहीं है. अगर आपको इसे दोहराना है, तो इसे लागू करने के लिए सिर्फ़ एक कंपोज़ेबल फ़ंक्शन बनाया जा सकता है. यह कंपोज़ेबल लैम्डा पैरामीटर को एक्ज़ीक्यूट करता है. उदाहरण के लिए,
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)@Direct को @ComposableContract(restartable=false) के पक्ष में बंद कर दिया गया था (If4708)
हाल ही में लॉन्च किए गए StateFlow के लिए एक अडैप्टर जोड़ा गया है. इससे हमें शुरुआती वैल्यू को पहले से भरने की अनुमति मिलती है, ताकि लौटाया गया State, नॉन-नलेबल हो (I61dd8, b/156233789)
Flow के लिए अडैप्टर जोड़ा गया. इस्तेमाल का उदाहरण: val value by flow.collectAsState() (If2198, b/153375923)
[बदला जा सकता है]स्टेट प्रॉपर्टी डेलिगेट ऑपरेटर को एक्सटेंशन में ले जाया गया है, ताकि Kotlin 1.4 प्रॉपर्टी डेलिगेट ऑप्टिमाइज़ेशन का इस्तेमाल किया जा सके.
by state { ... }याby mutableStateOf(...)का इस्तेमाल जारी रखने के लिए, कॉल करने वालों को इंपोर्ट जोड़ने होंगे. (I5312c)androidx.compose.ViewComposer को androidx.ui.node.UiComposer में ले जाया गया है androidx.compose.Emittable को हटा दिया गया है. यह ComponentNode के साथ काम नहीं करता था. androidx.compose.ViewAdapters को हटा दिया गया है. अब इन्हें इस्तेमाल के उदाहरण के तौर पर स्वीकार नहीं किया जाता. Compose.composeInto का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,
setContentयाsetViewContentका इस्तेमाल करें. Compose.disposeComposition को बंद कर दिया गया है. इसके बजाय,setContentसे मिलेCompositionपरdisposeतरीके का इस्तेमाल करें. androidx.compose.Compose.subcomposeInto को androidx.ui.core.subcomposeInto में ले जाया गया है ComponentNode#emitInsertAt का नाम बदलकर ComponentNode#insertAt कर दिया गया है ComponentNode#emitRemoveAt का नाम बदलकर ComponentNode#removeAt कर दिया गया है ComponentNode#emitMode का नाम बदलकर ComponentNode#move कर दिया गया है (Idef00)ComposeFlags.COMPOSER_PARAMफ़्लैग कोtrueके तौर पर अपडेट किया गया है. इससे कंपोज़ प्लगिन के लिए कोड जनरेट करने की रणनीति बदल जाएगी. ऊपरी तौर पर, इसकी वजह से @Composable फ़ंक्शन, एक अतिरिक्त सिंथेटिक पैरामीटर के साथ जनरेट होते हैं. इस पैरामीटर को बाद के @Composable कॉल में पास किया जाता है, ताकि रनटाइम, एक्ज़ीक्यूशन को सही तरीके से मैनेज कर सके. यह बाइनरी में किया गया एक अहम बदलाव है. हालांकि, Compose के सभी मान्य इस्तेमाल में, सोर्स-लेवल की कंपैटिबिलिटी बनी रहनी चाहिए. (I7971c)ambients API में बड़े बदलाव. ज़्यादा जानकारी के लिए, लॉग और
Ambient<T>दस्तावेज़ देखें (I4c7ee, b/143769776)ui-livedata जोड़ा गया है. यह LiveData के लिए अडैप्टर वाला नया आर्टफ़ैक्ट है. इस्तेमाल का उदाहरण: val value by liveData.observeAsState() (Ie9e8c, b/150465596)
शुरुआती वैल्यू के बिना Rx अडैप्टर का इस्तेमाल अब नहीं किया जा सकता. शून्य का इस्तेमाल हमेशा सबसे अच्छा डिफ़ॉल्ट नहीं होता. उदाहरण के लिए, जब आपके पास कोई सूची होती है, तो emptyList() या किसी अन्य उचित डिफ़ॉल्ट (I00025, b/161348384) से शुरू करना बेहतर होता है
ui-rxjava2 जोड़ा गया. यह RxJava2 के लिए अडैप्टर वाला नया आर्टफ़ैक्ट है. इस्तेमाल का उदाहरण: val value by observable.subscribeAsState() (Ifab4b, b/153369097)
savedInstanceState()का इस्तेमाल अब नल वैल्यू स्वीकार करने वाले टाइप के साथ किया जा सकता है (I6847f, b/153532190)कस्टम सेवर ऑब्जेक्ट लिखना आसान बनाने के लिए, listSaver() और mapSaver() का नया तरीका (I8cf68, b/152331508)
नए फ़ंक्शन: savedInstanceState() और rememberSavedInstanceState(). ये state() और remember() फ़ंक्शन की तरह ही होते हैं. हालांकि, इनमें सेव किए गए इंस्टेंस की स्थिति को सपोर्ट करने की सुविधा पहले से मौजूद होती है (If1987, b/152025209)
गड़बड़ियां ठीक की गईं
runOnIdleComposeका नाम बदलकरrunOnIdleकर दिया गया (I83607)- LayoutNode एक्सपेरिमेंटल एपीआई (I4f2e9) बनाया गया
- androidx.ui.foundation.TextFieldValue और androidx.ui.input.EditorValue अब काम नहीं करते. इस तरह के कंपोज़ेबल का इस्तेमाल करने वाले TextField, FilledTextField, और CoreTextField कंपोज़ेबल को भी बंद कर दिया गया है. कृपया इसके बजाय androidx.ui.input.TextFieldValue का इस्तेमाल करें (I4066d, b/155211005)
- Modifier पर drawBackground एक्सटेंशन एपीआई के पक्ष में, DrawBackground एपीआई को हटाया गया. कलर, ब्रश, और पेंट के drawBackground को फिर से फ़ैक्टर किया गया है, ताकि कोड पाथ कम किए जा सकें. साथ ही, कंपोज़िशन के हिस्से के तौर पर बनाए जाने वाले मॉडिफ़ायर की ज़रूरत को हटाया जा सके. (I0343a)
- ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने पेंट ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी Canvas का ऐक्सेस चाहिए वे drawCanvas एक्सटेंशन के तरीके का इस्तेमाल कर सकते हैं. यह तरीका, Canvas के साथ ड्राइंग कमांड जारी करने के लिए कॉलबैक उपलब्ध कराता है. (I80afd)
- WithConstraints ट्रेलिंग लैम्डा एपीआई में बदलाव किया गया है. अब इसमें दो पैरामीटर के बजाय, एक रिसीवर स्कोप है. यह स्कोप, कंस्ट्रेंट और layoutDirection के साथ-साथ Dp में minWidth, maxWidth, minHeight, और maxHeight प्रॉपर्टी भी उपलब्ध कराता है (I91b9a, b/149979702)
- सिमेट्रिक पैडिंग मॉडिफ़ायर जोड़ा गया. (I39840)
- wrapContentWidth और wrapContentHeight को अपडेट किया गया है, ताकि किसी भी अलाइनमेंट के बजाय वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट का इस्तेमाल किया जा सके. ग्रैविटी मॉडिफ़ायर को वर्टिकल या हॉरिज़ॉन्टल अलाइनमेंट को स्वीकार करने के लिए अपडेट किया गया था. कस्टम अलाइनमेंट को लगातार इस्तेमाल करने की सुविधा के लिए, पंक्ति, कॉलम, और स्टैक को अपडेट किया गया. (Ib0728)
- ui-text मॉड्यूल का नाम बदलकर ui-text-core (I57dec) कर दिया गया है
- DrawModifier API को बेहतर बनाएं:
- draw() ContentDrawScope के लिए रिसीवर स्कोप बनाया गया
- draw() पर मौजूद सभी पैरामीटर हटा दिए गए हैं
- DrawScope का इंटरफ़ेस, CanvasScope जैसा ही है
- ContentDrawScope में drawContent() मेथड होता है (Ibaced, b/152919067)
- ColoredRect को बंद कर दिया गया है. इसके बजाय,
Box(Modifier.preferredSize(width, height).drawBackground(color))का इस्तेमाल करें. (I499fa, b/152753731) - मॉडिफ़ायर प्लस ऑपरेटर को फ़ैक्ट्री एक्सटेंशन फ़ंक्शन (I225e4) से बदल दिया गया है
- RowScope और ColumnScope के सदस्यों को अब लाइन और कॉलम के बाहर भी ऐक्सेस किया जा सकता है. (I3a641)
- LayoutFlexible का नाम बदलकर LayoutWeight कर दिया गया है. टाइट पैरामीटर का नाम बदलकर फ़िल कर दिया गया है. (If4738)
- WithConstraints को LayoutDirection पैरामीटर मिला (I6d6f7)
- बैकग्राउंड का नाम बदलकर DrawBackground कर दिया गया है. साथ ही, इसे डिफ़ॉल्ट रूप से याद रखने की सुविधा चालू कर दी गई है (Ia0bd3)
- ButtonStyle को अलग-अलग फ़ंक्शन से बदल दिया गया है. साथ ही, टेक्स्ट (स्ट्रिंग) ओवरलोड को हटा दिया गया है. इस्तेमाल की जानकारी के लिए, अपडेट किए गए सैंपल देखें. (If63ab, b/146478620, b/146482131)
runOnIdleComposeऔरrunOnUiThreadअब ComposeTestRule पर मौजूद तरीकों के बजाय, ग्लोबल फ़ंक्शन हैं. (Icbe8f)
बाहरी योगदान
- Compose Runtime की पोर्टिंग लेयर (I6847d) से, Looper और Handler जैसे गैर-ज़रूरी एपीआई हटाएं
Flow<T>.collectAsState()को बिना किसी शुरुआती वैल्यू के बंद कर दिया गया है. इसके बजाय,StateFlow<T>का इस्तेमाल करें या साफ़ तौर पर शुरुआती वैल्यू पास करें. (I63f98, b/157674865)