Compose Runtime
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(सभी Compose पैकेज के लिए, एपीआई का संदर्भ देने वाले दस्तावेज़ देखें)
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 09 सितंबर, 2026 | 1.12.1 | - | - | 1.13.0-alpha03 |
संरचना
Compose, androidx में मौजूद सात Maven ग्रुप आईडी का कॉम्बिनेशन है. हर ग्रुप में, फ़ंक्शन का एक सबसेट होता है. हर ग्रुप के रिलीज़ नोट का अपना सेट होता है.
इस टेबल में, ग्रुप और रिलीज़ नोट के हर सेट के लिंक दिए गए हैं.
| समूह | ब्यौरा |
|---|---|
| compose.animation | उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Jetpack Compose ऐप्लिकेशन में ऐनिमेशन बनाएं. |
| compose.compiler | Kotlin कंपाइलर प्लगिन की मदद से, @Composable फ़ंक्शन को बदलें और ऑप्टिमाइज़ेशन चालू करें. |
| 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.12.1" implementation "androidx.compose.runtime:runtime-livedata:1.12.1" implementation "androidx.compose.runtime:runtime-rxjava2:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.12.1") implementation("androidx.compose.runtime:runtime-livedata:1.12.1") implementation("androidx.compose.runtime:runtime-rxjava2:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.13
वर्शन 1.13.0-alpha03
09 सितंबर, 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha03 रिलीज़ हो गया है. वर्शन 1.13.0-alpha03 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस
- इनलाइन
SlotWriter.forAllDataInRememberOrder, ताकि आवंटन को हटाया जा सके (Ie39f6)
वर्शन 1.13.0-alpha02
26 अगस्त, 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha02 रिलीज़ हो गया है. वर्शन 1.13.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
withLocalRetainedValuesStoreजोड़ा गया है. इसकी मदद से, कॉन्टेंट लैम्डा से वैल्यू दिखाई जा सकती हैं. (I8e871, b/542168593)MutableStateके लिए,rememberSerializableके नल वैल्यू स्वीकार करने वाले ओवरलोड जोड़े गए. (I77b83, b/543285462)
वर्शन 1.13.0-alpha01
12 अगस्त, 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha01 रिलीज़ हो गया है. वर्शन 1.13.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
हमने
LinkTableफ़ीचर फ़्लैग में बदलाव किया है, ताकि मर्ज किए गए ProGuard के नियम सेट में टकराव कम हो. साथ ही, Gradle के बाहर किसी ऐप्लिकेशन को छोटा करने पर, उसकी कंपैटिबिलिटी बढ़ाई जा सके. फ़्लैग को कॉन्फ़िगर करने के लिए इस्तेमाल किए जाने वाले proguard सिंटैक्स में थोड़ा बदलाव किया गया है. नीचे दिया गया उदाहरण देखें. साथ ही, जोड़े गए पैरंटheses (I419da) पर ध्यान दें:-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }produceState()औरFlow.collectAsState()अबSnapshotMutationPolicyआर्ग्युमेंट स्वीकार करते हैं. इससे,Stateऑब्जेक्ट की समानता और मर्ज करने की नीति को कंट्रोल किया जा सकता है. (I0c167, b/405128869)@ComposableTargetको दोहराया जा सकता है. ज़्यादा जानकारी के लिए, अपडेट किया गया दस्तावेज़ देखें. (I99a89, b/481422057)रीकंपोज़िशन अमान्य होने के फ़्लो को रिकॉर्ड करने के लिए
RecompositionTracerजोड़ा गया (I1dbc1, Ia991d, b/531813367)नेविगेशन/बैक स्टैक की स्थिति को मैनेज करने और बाहरी
keyट्रैकिंग की ज़रूरत को खत्म करने के लिए,SaveableStateHolderपर दिखने वालाkeysदिखाया गया है.holder.keysसे ऐक्सेस करें;removeStateसे हटाएं. (I9bbbb, b/398887924)staticCompositionLocalWithComputedDefaultOfको जोड़ा गया है, ताकिProvidableCompositionLocalsबनाया जा सके. अगर वैल्यू दी जाती है, तो ये स्टैटिक के तौर पर काम करते हैं. अगर वैल्यू नहीं दी जाती है, तो इनकी गिनती की जाती है. (I844e4)
गड़बड़ियां ठीक की गईं
GapComposerमें मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से,withCompositionLocalब्लॉक के बादRememberObserverइंस्टेंस, ब्लॉक में मौजूदRememberObserverसे पहले, अपने फ़ॉरगेट कॉलबैक को गलत तरीके से एक्ज़ीक्यूट कर सकते हैं. (I4d54c)- बदले जा सकने वाले स्टेट ऑब्जेक्ट में लिखते समय, कम वॉल्यूम वाले अपवाद को ठीक किया गया है. (I48194, b/503110696)
SnapshotStateSet.writeToParcelमें मौजूद उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, सिर्फ़ पहली एंट्री को क्रम से लगाया जा रहा था. (I64f4c, b/537461421)CancellationExceptions का इस्तेमालLaunchedEffects को रद्द करने और याद रखे गएCoroutineScopesके लिए किया जाता है. स्टैक ट्रेस में दिखने पर, इन्हें ज़्यादा साफ़ तौर पर दिखाया जाता है. (I89840, b/449897855)- डाइनैमिक गेटर का इस्तेमाल करके,
compose:runtimeवैल्यू क्लास (ComposeStackTraceMode,GroupKind) के कंपैनियन ऑब्जेक्ट के ऑप्टिमाइज़ किए गए इनिशियलाइज़ेशन की सुविधा जोड़ी गई है. (I50640) compileSdk37 (If78b4) की ज़रूरी शर्त हटाएं
बाहरी योगदान
- लाइव एडिट के दौरान, गड़बड़ी वाली सबकंपोज़िशन को हटाने पर, पैरंट कंपोज़िशन के जवाब न देने की समस्या को ठीक किया गया. (I3717c)
- सबकंपोज़िशन में गड़बड़ी होने के बाद, लाइव एडिट की सुविधा को फिर से चालू करने की समस्या ठीक की गई है. इससे पैरंट कंपोज़िशन, स्थिति में हुए बदलावों को ट्रैक कर सकेंगी. (I63fb5)
वर्शन 1.12
वर्शन 1.12.1
09 सितंबर, 2026
androidx.compose.runtime:runtime-*:1.12.1 को 1.12.0 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.12.1 में ये बदलाव शामिल हैं.
वर्शन 1.12.0
12 अगस्त, 2026
androidx.compose.runtime:runtime-*:1.12.0 रिलीज़ हो गया है. वर्शन 1.12.0 में ये बदलाव शामिल हैं.
1.11.0 के बाद हुए अहम बदलाव:
एक्सपेरिमेंट के तौर पर उपलब्ध स्लॉट टेबल से जुड़े अपडेट
- हमने 1.11 वर्शन में एक्सपेरिमेंट के तौर पर लागू की गई
LinkTableसुविधा को बेहतर बनाने के लिए काम किया है. नया वर्शन, रीकंपोज़िशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए डिज़ाइन किया गया है. खास तौर पर, छोटे-मोटे बदलावों के साथ. हम उपयोगकर्ताओं को नयाSlotTableआज़माने और किसी भी समस्या की शिकायत करने के लिए बढ़ावा देते हैं. ज़्यादा जानकारी के लिए,ComposeRuntimeFlags.isLinkBufferComposerEnabledपर जाएं.
Keys API के साथ साइड इफ़ेक्ट
SideEffectमें एक ओवरलोड जोड़ा गया है, जो मुख्य आर्ग्युमेंट स्वीकार करता है. नए एपीआई का इस्तेमाल, एक बार मेंSideEffects को ट्रिगर करने के लिए किया जा सकता है. इसके लिए, ऐसेLaunchedEffectयाDisposableEffectकी ज़रूरत नहीं होती जिनकेCoroutineScopeयाonDisposeब्लॉक का इस्तेमाल नहीं किया गया है. (I528b2, b/476108743)
वर्शन 1.12.0-rc01
29 जुलाई, 2026
androidx.compose.runtime:runtime-*:1.12.0-rc01 रिलीज़ हो गया है. वर्शन 1.12.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.12.0-beta02
01 जुलाई, 2026
androidx.compose.runtime:runtime-*:1.12.0-beta02 रिलीज़ हो गया है. वर्शन 1.12.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए
MovableContentका इस्तेमाल करते समय,LinkComposerमें मौजूदArrayIndexOutOfBoundsExceptionको ठीक किया गया है. (I85daf)
वर्शन 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 runtime में,
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)
Runtime Tracing 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.4
01 जुलाई, 2026
androidx.compose.runtime:runtime-*:1.11.4 रिलीज़ हो गया है. वर्शन 1.11.4 में ये बदलाव शामिल हैं.
वर्शन 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 को ज़्यादा बेहतर तरीके से मॉनिटर करना
snapshotFlowके ज़्यादा असरदार ऑब्ज़र्वेशन के लिए,SnapshotFlowManagerएपीआई लॉन्च किया गया. एक से ज़्यादाsnapshotFlowइंस्टेंस के लिए एक हीSnapshotFlowManagerका इस्तेमाल करने पर, स्नैपशॉट लागू करने वाले कम ऑब्ज़र्वर रजिस्टर होते हैं. इससे प्रोसेसिंग की स्थिति के अपडेट तेज़ी से होते हैं.
वर्शन 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) वाले डिवाइसों पर कई सबकंपोज़िशन बनाते समय, OOM से जुड़ी गड़बड़ियां नहीं होती हैं
वर्शन 1.11.0-beta01
11 मार्च, 2026
androidx.compose.runtime:runtime-*:1.11.0-beta01 रिलीज़ हो गया है. वर्शन 1.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SnapshotFlowManagerऔरsnapshotFlowके ओवरलोड, जोmanagerपैरामीटर स्वीकार करते हैं उन्हें अब एक्सपेरिमेंटल के तौर पर मार्क किया गया है (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)- [लिंट] छोटी-मोटी गड़बड़ी ठीक की गई है, ताकि डिटेक्टर कंपाउंड असाइनमेंट के बारे में सही तरीके से चेतावनी दे सके. (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कर दिया गया है. अब यह क्लास, कंपोज़िशन मेंRetainedValuesStores को इंस्टॉल और मैनेज करने के लिए सिर्फ़ एपीआई दिखाती है.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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
RetainScopesके कलेक्शन को मैनेज करने के लिए,RetainScopeHolderएपीआई जोड़ा गया. इसका इस्तेमाल, उन कंटेनर और नेविगेशन होस्ट के लिए डेटा बनाए रखने की नीति लागू करने के लिए किया जा सकता है जिनमें अलग-अलग डेटा बनाए रखने की अवधि वाले कई चाइल्ड शामिल होते हैं. (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)
गड़बड़ियां ठीक की गईं
- कॉन्टेंट में बदलाव करने पर, कंपोज़िशन के रूट नोड में बदलाव होता है. ऐसे में, Applier के लिए सही तरीके से ऑपरेशन का हिसाब लगाने के लिए, मूव किए जा सकने वाले कॉन्टेंट को ठीक किया गया है. जब मूव किए जा सकने वाले कॉन्टेंट के लिए बदलावों का हिसाब लगाया जाता है, तब
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उन वैरिएबल को मार्क करता है जिन्हें कंपोज़िशन में याद रखना चाहिए. लिंट चेक से जुड़ी चेतावनियां, गलत इस्तेमाल के बारे में सूचना देती हैं.
androidx.compose.runtime:runtimeअब अन्य प्लैटफ़ॉर्म पर भी काम करेगा. डेस्कटॉप, iOS, और नेटिव टारगेट के लिए सहायता को JetBrains के Compose Multiplatform प्रोजेक्ट से अपस्ट्रीम किया गया है. इसे आने वाले समय में, Google Maven के ज़रिए रिलीज़ किया जाएगा. इससे, कंपोज़ करने से जुड़े अन्य आर्टफ़ैक्ट पर कोई असर नहीं पड़ता.
वर्शन 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()को सही तरीके से बदलता है. को रोके जा सकने वाले कंपोज़िशन के साथ पेश किया गया था. ऐसा न होने पर, वर्चुअल नोड अपडेट करते समय, रोके जा सकने वाले कंपोज़िशन में अपवाद हो सकता है. (Idbf31, b/409291131)- एक डेडलॉक ठीक किया गया है. इससे Molecule का इस्तेमाल करने वाले लोगों पर असर पड़ सकता है. ऐसा तब होता है, जब फ़्रेम भेजे जाने के दौरान
FrameClock.withFrameNanosपर निलंबित कॉल रद्द कर दिया जाता है. (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) PausableComposition,isApplied, और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()को सही तरीके से बदलता है. को रोके जा सकने वाले कंपोज़िशन के साथ पेश किया गया था. ऐसा न होने पर, वर्चुअल नोड अपडेट करते समय, रोकी जा सकने वाली कंपोज़िशन में अपवाद आ सकता है. (Idbf31, b/409291131)- एक डेडलॉक ठीक किया गया है. इससे Molecule का इस्तेमाल करने वाले लोगों पर असर पड़ सकता है. ऐसा तब होता है, जब फ़्रेम भेजे जाने के दौरान
FrameClock.withFrameNanosपर निलंबित कॉल रद्द कर दिया जाता है. (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 की जांचों के लिए, अब कमांड लाइन से कम से कम AGP 8.8.2 वर्शन की ज़रूरत होती है. साथ ही, IDE के साथ काम करने के लिए, कम से कम Android Studio Ladybug की ज़रूरत होती है. अगर AGP का पुराना वर्शन इस्तेमाल किया जा रहा है, तो AGP पर असर डाले बिना Lint के वर्शन को अपग्रेड करने के लिए, gradle.properties में
android.experimental.lint.version=8.8.2सेट किया जा सकता है. (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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एपीआई के दिशा-निर्देशों के मुताबिक,
SnapshotObservermethods onCreating का नाम बदलकर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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
PausableCompositionएपीआई में बदलाव. ये बदलाव, 1.8.0-alpha की पिछली रिलीज़ (1.8.0-alpha02 से) के मुकाबले काफ़ी अलग हैं. हालांकि, ये 1.8.0 में नए एपीआई हैं. इसलिए, पुराने सिस्टम के साथ काम करने की सुविधा उपलब्ध नहीं है, क्योंकि एपीआई अब भी ऐल्फ़ा वर्शन में हैं. (I39819)- यह टूलिंग एपीआई जोड़ता है, ताकि Recomposer (Iaeb7e) में नई कंपोज़िशन बनाने की प्रोसेस को मॉनिटर किया जा सके
snapshotIdकोSnapshotमें जोड़ा गया. इसका टाइपLongहै. साथ ही,idको बंद कर दिया गया है. स्नैपशॉट के आईडी कोIntसे बदलकरLongकर दिया गया है, ताकि बहुत ज़्यादा फ़्रेम रेट और लंबे समय तक चलने वाले ऐनिमेशन वाले सिस्टम पर स्नैपशॉट आईडी ओवरफ़्लो न हो. इस टाइप को expect/actual बनाया गया था, ताकि इसे उन प्लैटफ़ॉर्म परIntया अन्य टाइप के तौर पर इस्तेमाल किया जा सके जिन पर नेटिवLongटाइप नहीं है. जिन प्लैटफ़ॉर्म में नेटिव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 को, 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प्रॉपर्टी का इस्तेमाल किया जा सकता है. इसे वैल्यू कंप्यूट करने वाले लैम्डा फ़ंक्शन से ऐक्सेस किया जा सकता है. इसका इस्तेमाल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प्रॉपर्टी का इस्तेमाल किया जा सकता है. इसे वैल्यू कंप्यूट करने वाले लैम्डा फ़ंक्शन से ऐक्सेस किया जा सकता है. इसका इस्तेमाल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 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- डेटा से तय की गई स्थिति के आकलन (ee7daf) के लिए,
Snapshot.currentको एक बार कॉल करें - कंपोज़िशन में हर ऑब्ज़र्वेशन के लिए,
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)
ScopeMapका इस्तेमाल करके, फिर से कंपोज़ करते समय (e19a7e) अमान्यताओं को पास करें- अमान्यताओं के मैप को ऑप्टिमाइज़ करें, ताकि सिर्फ़ डिराइव की गई स्थितियां बनी रहें (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)- Remove iterator allocation (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के null होने पर,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)- State और
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 के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- बदलाव न की गई डिराइव की गई स्थितियों 84d9b1c के लिए,
SnapshotStateObserverस्कोप अमान्य करें - कंपोज़िशन को हटाने के दौरान संभावित डेड-लॉक की समस्या को ठीक किया गया 28761fc
- कॉन्टेंट को सब-कंपोज़िशन 92d4156 में ले जाने की समस्या ठीक की गई
- रीस्टार्ट किए गए लैम्डा के लिए, बदले गए फ़्लैग ठीक किए गए (8a03e9)
- इफ़ेक्ट हटाने से पहले,
LayoutNodeके लिए डीऐक्टिवेशन कॉलबैक को लागू करें (8b0fa4) - नोड ग्रुप खत्म करते समय,
endToMarker()को ठीक करें. (d71d980) - खाता बंद करने की जांच के लिए, मौजूदा
SlotWriterग्रुप का इस्तेमाल करें (a0b518b) SlotTable.moveSlotGapTo()में मौजूदfillको हटाएं और उसे बंद करें (81f9935)- कॉन्टेंट को एक जगह से दूसरी जगह ले जाते समय, अमान्यताओं के न दिखने की समस्या को ठीक किया गया (1d7c024)
- चलते-फिरते इस्तेमाल किए जाने वाले कॉन्टेंट को दूसरी जगह ले जाने पर, तुरंत अमान्य होने की समस्या ठीक की गई (8676618)
परफ़ॉर्मेंस में सुधार
- अगर स्नैपशॉट में बदलाव नहीं किया गया है, तो
readableHashमेंDerivedStateको कैलकुलेट करने से बचें. (307102) - कम किए गए असाइनमेंट (I65c09, d7ea77, 727974, और 445808 )
- ईमेल लिखने की सुविधा को तुरंत बंद करने की सुविधा
CoroutineScopes(a55362 और bd382f) - ऐक्सेस नहीं किए जा सकने वाले राज्य के रिकॉर्ड (c986960) के साथ राज्य के ऑब्जेक्ट के रिकॉर्ड बदलना
- ग्रुप बनाते समय, सही स्कोप वाले कंपोज़र का इस्तेमाल करें (9a5e5b6)
- स्नैपशॉट अमान्य होने की जानकारी सेव करने के लिए
IdentityArraySetका इस्तेमाल करें (7f60cca) - स्नैपशॉट ऑब्ज़र्वेशन (5bc535f) के लिए, एट्रिब्यूशन कम करें
वर्शन 1.5.0-rc01
26 जुलाई, 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01 रिलीज़ हो गया है. वर्शन 1.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
बदलाव रिकॉर्ड होने तक, डिराइव की गई स्थितियों को फिर से पढ़ने की प्रोसेस को रोकें (f38099)
प्रिमिटिव के लिए,
mutableStateOf()कॉल को उनके खास टाइप में माइग्रेट करने का सुझाव देने के लिए, जांच का विकल्प उपलब्ध है. इसका लिंट आईडीAutoboxingStateCreationहै. पहले, यह जांच सभी प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती थी. Android Studio के एडिटर और आपके प्रोजेक्ट के लिंट आउटपुट में इस चेतावनी को देखने के लिए, इसकी गंभीरता को सूचना से बदलकर चेतावनी (या इससे ज़्यादा) पर सेट करें. इसके लिए, अपने मॉड्यूल के build.gradle या build.gradle.kts कॉन्फ़िगरेशन मेंwarning "AutoboxingStateCreation"को इस तरह से एलान करें (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
वर्शन 1.5.0-beta03
28 जून, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03 रिलीज़ हो गया है. वर्शन 1.5.0-beta03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हटाए जाने वाले सबकंपोज़िशन को फिर से कंपोज़ करने की प्रोसेस छोड़ें. (Ieeb99, b/254645321)
वर्शन 1.5.0-beta02
7 जून, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02 रिलीज़ हो गया है. वर्शन 1.5.0-beta02 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- अगर स्नैपशॉट में बदलाव नहीं किया गया है, तो
DerivedStateमेंreadableHashका हिसाब न लगाएं. (307102)
वर्शन 1.5.0-beta01
24 मई, 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01 रिलीज़ हो गया है. वर्शन 1.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- रीकंपोज़िशन, कलर ऐनिमेशन, और
AndroidComposeView(Ib2bfa) में किए गए बदलावों को हटाया गया @StateFactoryMarkerएनोटेशन जोड़ा गया है, ताकि उन फ़ंक्शन को मार्क किया जा सके जो स्थितियां बनाते हैं और जिन्हेंrememberकॉल में रैप किया जाना चाहिए. (I64550)- State और
MutableStateके प्रिमिटिव वर्शन जोड़े गए (fb3d89) Snapshot.isApplyObserverNotificationPendingको जोड़ा गया (I672a5)
गड़बड़ियां ठीक की गईं
- कम किए गए असाइनमेंट (I65c09, d7ea77, 727974, और 445808 )
ComposerImplमें स्नैपशॉट का रेफ़रंस न रखें (0206f7)- ईमेल लिखने की सुविधा
CoroutineScopesको तुरंत रद्द करने की सुविधा (a55362 और bd382f) - कंपोज़िशन को दो बार लागू न करें (f5791b)
- डिराइव की गई ऐसी स्थिति की वैल्यू को अमान्य करें जो शुरू नहीं की गई हैं (aa2a92)
- कंपोज़िशन को बंद करने के दौरान
onEndChangesकॉल करें. (62cc8c) - कॉन्टेंट को सब-कंपोज़िशन में ले जाने की समस्या ठीक की गई (4beb41)
- डेडलॉक की संभावित समस्याओं को ठीक करें (c1a425
- ON_STOP को कंपोज़िशन (f4a2d1) के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- रीस्टार्ट किए गए लैम्डा के लिए, बदले गए फ़्लैग ठीक किए गए (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 के बजाय, फ़्रेम क्लॉक ब्रॉडकास्ट को रोकना चाहिए
- बदलाव न की गई डिराइव की गई स्थितियों 84d9b1c के लिए,
SnapshotStateObserverस्कोप को अमान्य करें - कंपोज़िशन को हटाने के दौरान संभावित डेड-लॉक की समस्या को ठीक किया गया 28761fc
- कॉन्टेंट को सब-कंपोज़िशन 92d4156 में ले जाने की समस्या ठीक की गई
वर्शन 1.5.0-alpha02
5 अप्रैल, 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02 रिलीज़ हो गया है. वर्शन 1.5.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin के
getValueऑपरेटर को अब कंपोज़ किया जा सकता है (f174f6e)
गड़बड़ियां ठीक की गईं, परफ़ॉर्मेंस में सुधार किए गए
- ऐक्सेस नहीं किए जा सकने वाले राज्य के रिकॉर्ड (c986960) के साथ राज्य के ऑब्जेक्ट के रिकॉर्ड बदलना
- ग्रुप बनाते समय, सही स्कोप वाले कंपोज़र का इस्तेमाल करें (9a5e5b6)
- नोड ग्रुप खत्म करते समय,
endToMarker()को ठीक करें. (d71d980) - खाता बंद करने की जांच के लिए, मौजूदा
SlotWriterग्रुप का इस्तेमाल करें (a0b518b) - स्नैपशॉट अमान्य होने की जानकारी सेव करने के लिए
IdentityArraySetका इस्तेमाल करें (7f60cca) SlotTable.moveSlotGapTo()में मौजूदfillको हटाएं और उसे बंद करें (81f9935)- चलते-फिरते कॉन्टेंट के दौरान अमान्यताओं के न दिखने की समस्या को ठीक किया गया (1d7c024)
- चलते-फिरते इस्तेमाल किए जाने वाले कॉन्टेंट को दूसरी जगह ले जाने पर, तुरंत अमान्य होने की समस्या ठीक की गई (8676618)
- स्नैपशॉट ऑब्ज़र्वेशन (5bc535f) के लिए, बजट कम करें
वर्शन 1.5.0-alpha01
22 मार्च, 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01 रिलीज़ हो गया है. वर्शन 1.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
Modifier.Node#coroutineScopeको जोड़ता है, ताकिModifier.Nodesकोरूटीन लॉन्च कर सके (I76ef9)CompositionLocalConsumerModifierNodeइंटरफ़ेस लागू करके,Modifier.NodesकोCompositionLocalsपढ़ने की अनुमति दें. (Ib44df)
वर्शन 1.4
वर्शन 1.4.3
3 मई, 2023
androidx.compose.runtime:runtime-*:1.4.3 को बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 1.4.2
19 अप्रैल, 2023
androidx.compose.runtime:runtime-*:1.4.2 रिलीज़ हो गया है. वर्शन 1.4.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
स्नैपशॉट सूची और मैप 2eb6570 में संभावित डेडलॉक ठीक किया गया
SnapshotStateListयाSnapshotStateMapमें कॉन्टेंट जोड़ने पर, डेडलॉक की समस्या आ सकती है. ऐसा तब होता है, जब बदलाव, स्टेट रिकॉर्ड में सीधे तौर पर लिखने के साथ-साथ हो रहा हो. 93fcae828b में किए गए बदलावों की वजह से, इस समस्या के होने की संभावना काफ़ी बढ़ गई है. यह बदलाव, इस्तेमाल न किए गए रिकॉर्ड को रिलीज़ करने के लिए सीधे तौर पर लिखता है.अब लॉक को इस तरह से क्रम में लगाया गया है कि मैप या सूची लॉक होने पर, स्नैपशॉट लॉक लेने की कोशिश कभी नहीं की जाती.
वर्शन 1.4.1
5 अप्रैल, 2023
androidx.compose.runtime:runtime-*:1.4.1 रिलीज़ हो गया है. वर्शन 1.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नोड ग्रुप खत्म करते समय,
endToMarker()से जुड़ी समस्या ठीक की गई. d71d980
वर्शन 1.4.0
22 मार्च, 2023
androidx.compose.runtime:runtime-*:1.4.0 रिलीज़ हो गया है. वर्शन 1.4.0 में ये बदलाव शामिल हैं.
1.3.0 के बाद हुए अहम बदलाव
- पहले कंपोज़िशन 3680e25 के लिए,
LiveDataसे शुरू की गई वैल्यू का इस्तेमाल करें - Compose नोड के लाइफ़साइकल को मॉनिटर करने के लिए,
ComposeNodeLifecycleCallbackजोड़ें. 8b6a258 ComposableMethod7b6c7ad मेंparameterTypesप्रॉपर्टी जोड़ें
गड़बड़ियां ठीक की गईं और परफ़ॉर्मेंस में सुधार किए गए
SnapshotStateObserver29f4a3e में, स्कोप के दोनों इंडेक्स मिटाएं- उन ग्रुप को जोड़ें जिनकी ज़रूरत, स्किप न किए जा सकने वाले लैम्डा 7d06752 के मुख्य हिस्से में होती है
- स्नैपशॉट की स्थिति 93fcae8 की मेमोरी रेफ़रंस की विशेषताओं को बेहतर बनाया गया
- कंपोज़िशन लोकल लुकअप में बॉक्सिंग की सुविधा हटाना 0875717
- Use correct key for non-reusable nodes groups 6388d8d
- Protect
SnapshotStateObserverfrom recursive and concurrent applies 98cb6ba IdentityArraySet"get" तरीके में, चेक-इंडेक्स-बाउंड की जांच जोड़ी गई 35a77d3ViewTreeLifecycleOwnerएक्सटेंशन का इस्तेमाल करने के लिए, कंपोज़ मॉड्यूल को अपडेट करें 21c2122- Recomposer के फ़्रेम को पूरा करने के बाद, लागू करने की सूचनाएं भेजें. 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- इनलाइन/इस्तेमाल बंद किए गए-छिपाए गए फ़ंक्शन के टाइप/शून्य होने की स्थिति के बारे में ज़्यादा जानकारी (I24f91)
वर्शन 1.4.0-alpha04
11 जनवरी, 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04 रिलीज़ हो गया है. वर्शन 1.4.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TestMonotonicFrameClockमें अब एक्सपेरिमेंट के लिए सही एनोटेशन का इस्तेमाल किया जाता है. (I95c9e)
गड़बड़ियां ठीक की गईं
SnapshotStateObserverको बार-बार और एक साथ लागू होने से बचाएं (d902fb)
वर्शन 1.4.0-alpha03
7 दिसंबर, 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03 रिलीज़ हो गया है. वर्शन 1.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ComposableMethodक्लास मेंjava.lang.reflect.Method#getParameterTypes()(Iab0c3) के जैसा नया सार्वजनिक तरीका जोड़ना
गड़बड़ियां ठीक की गईं
- स्नैपशॉट लागू करने की सूचनाएं अब
Recomposerके बदलाव लागू करने के बाद भेजी जाती हैं. (Iad6c0, b/222093277)
वर्शन 1.4.0-alpha02
9 नवंबर, 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02 रिलीज़ हो गया है. वर्शन 1.4.0-alpha02 में ये बदलाव शामिल हैं.
वर्शन 1.4.0-alpha01
24 अक्टूबर, 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01 रिलीज़ हो गया है. वर्शन 1.4.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SnapshotStateListऔरSnapshotStateMapमें अबtoList()औरtoMap()को साफ़ तौर पर लागू किया गया है. ये तरीके, कॉपी किए बिना ही अपना मौजूदा कॉन्टेंट दिखाते हैं. ऐसा इसलिए होता है, क्योंकि ये कॉन्टेंट को सेव करने के लिए इस्तेमाल किए गए इंटरनल इम्यूटेबल डेटा को दिखाते हैं. इस वैल्यू का इस्तेमाल, उदाहरण के लिए,snapshotFlowका इस्तेमाल करके वैल्यू का फ़्लो बनाने के लिए किया जा सकता है. इसके लिए, डेटा को कॉपी करने की ज़रूरत नहीं होती. (Ica2bd)
वर्शन 1.3
वर्शन 1.3.3
11 जनवरी, 2023
androidx.compose.runtime:runtime-*:1.3.3 रिलीज़ हो गया है. वर्शन 1.3.3 में ये बदलाव शामिल हैं.
- 1.3.2 के बाद से कोई बदलाव नहीं किया गया है
वर्शन 1.3.2
7 दिसंबर, 2022
androidx.compose.runtime:runtime-*:1.3.2 रिलीज़ हो गया है. वर्शन 1.3.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- androidx.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 APIs
ComposableMethodएपीआई को जोड़ा गया है, ताकि कंपोज़ेबल एपीआई के रिफ़्लेक्शन-आधारित इनवोकेशन को ज़्यादा भरोसेमंद बनाया जा सके.- invokeComposable को कंपोज़ रनटाइम में ले जाना
- कंपोज़ेबल तरीके को लागू करने के लिए, एपीआई में बदलाव करना
रनटाइम से जुड़ी गड़बड़ियां ठीक की गईं
- मार्कर की जांच करने के लिए, स्लॉट टेबल के लिए रेंज टेस्ट से जुड़ी गड़बड़ी ठीक की गई
- कॉन्टेंट को SubcomposeLayout में ले जाने और उससे बाहर ले जाने की अनुमति देना
- सबकंपोज़िशन के नए कॉन्टेंट में कॉन्टेंट को ले जाने की समस्या ठीक की गई
स्नैपशॉट सिस्टम
- स्नैपशॉट सिस्टम में, मेमोरी मैनेजमेंट, परफ़ॉर्मेंस, और सही तरीके से काम करने से जुड़े कई सुधार किए गए हैं.
- SnapshotStateObserver में Optimize स्कोप हटाने की सुविधा
- पारदर्शी स्नैपशॉट से बनाए गए नेस्ट किए गए स्नैपशॉट हटाना
- ग्लोबल स्नैपशॉट से स्थिति को पढ़ते समय रेस कंडीशन ठीक की गई
- 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एपीआई को लॉन्च करना था. इसका इस्तेमाल, शेयर किए गए एलिमेंट ट्रांज़िशन जैसे जटिल यूज़र एक्सपीरियंस (यूएक्स) को चालू करने के लिए किया जा सकता है.movableContentOfAPI, कॉम्पोज़ेबल लैंबडा को ऐसे लैंबडा में बदलता है जो अपनी स्थिति और उससे जुड़े नोड को किसी भी नई जगह पर ले जाता है. जब पिछला कॉल कंपोज़िशन से हट जाता है, तो स्थिति को कुछ समय के लिए सेव कर लिया जाता है. अगर लैंबडा को कोई नया कॉल कंपोज़िशन में शामिल होता है, तो स्थिति और उससे जुड़े नोड, नए कॉल की जगह पर ले जाए जाते हैं. अगर कोई नया कॉल नहीं जोड़ा जाता है, तो स्थिति को हमेशा के लिए हटा दिया जाता है. साथ ही, पर्यवेक्षकों को इसकी सूचना दी जाती है.अगर एक ही कंपोज़िशन में
movableContentOfलैम्डा को कई बार कॉल किया जाता है, तो हर कॉल के लिए नया स्टेट और नोड बनाया जाता है. साथ ही, जैसे-जैसे कॉल कंपोज़िशन से बाहर निकलते हैं और नए कॉल जुड़ते हैं, वैसे-वैसे स्टेट को पहले बाहर निकलने वाले कॉल से, जुड़ने वाले कॉल में ट्रांसफ़र किया जाता है. यह ट्रांसफ़र, कॉल किए जाने के क्रम के हिसाब से होता है. नई कॉल से नहीं जुड़े सभी डेटा को हमेशा के लिए हटा दिया जाता है.इसके अलावा, कुछ अन्य नई सुविधाओं के साथ-साथ, रनटाइम और स्नैपशॉट की स्थिति वाले सिस्टम को स्थिर करने में भी काफ़ी समय लगा. मेमोरी लीक की कई समस्याओं को ठीक किया गया और कोड पाथ को ऑप्टिमाइज़ किया गया.
बदलावों की खास जानकारी वाली सूची यहां दी गई है:
1.2 में नई सुविधाएं
- एक्सपेरिमेंट के तौर पर उपलब्ध स्नैपशॉट 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 के कंपोज़िट हैश की को एक जैसा रखने के लिए ठीक किया गया
- ऐसी समस्या को ठीक किया गया है जिसमें कंपोज़र क्रैश हो जाता था
- पक्का करें कि किसी ग्रुप को अमान्य करने पर, उसे फिर से कंपोज़ किया जाए
- इनपुट के साथ 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()API (Iff072) जोड़ा गया @fileप्रीफ़िक्स का इस्तेमाल करके, अब फ़ाइल स्कोप में@ComposableTargetएनोटेशन और@ComposableTargetMarkerसे मार्क किए गए एनोटेशन का इस्तेमाल किया जा सकता है. फ़ाइल स्कोप पर टारगेट एनोटेशन का इस्तेमाल करने से, कंपाइलर यह मान लेगा कि फ़ाइल में मौजूद सभी कंपोज़ेबल फ़ंक्शन, ऐप्लिकेशन से जुड़े ऐप्लिकेशन को टारगेट करने के लिए हैं. उदाहरण के लिए,@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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TracingInProgressकोCompositionTracerइंटरफ़ेस में जोड़ा गया. (Ic6f12)- Composer (I0c873) में
recomposeScopeIdentityजोड़ें - 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कंपोज़र के उन तरीकों से
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 कंपाइलर सिर्फ़ उसी वर्शन या उसके बाद के Compose रनटाइम के साथ काम करता था. इस बदलाव के बाद, 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 Release का आधिकारिक ब्लॉग देखें!
मौजूदा समस्याएं
अगर 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 में ये बदलाव किए गए हैं:
- TopAppBar/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)
- स्नैपशॉट एपीआई को अपडेट किया गया है, ताकि यह एपीआई के दिशा-निर्देशों के मुताबिक काम करे. साथ ही, सार्वजनिक एपीआई से इंटरनल इंप्लीमेंटेशन क्लास को छिपाया जा सके. (Id9e32)
- Ambient का नाम बदलकर CompositionLocal कर दिया गया है. इसलिए, Ambients का नाम भी बदल दिया गया है. पहले, ऐंबिएंट का नाम AmbientFoo होता था. अब CompositionLocals का नाम 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 अब डिफ़ॉल्ट रूप से, विंडो के दायरे वाले Recomposer को लेज़ी तरीके से बनाता है. ये Recomposer, विंडो के लिए ViewTreeLifecycleOwner से मैनेज होते हैं. होस्ट के लाइफ़साइकल के रुकने पर, रीकंपोज़िशन और 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- SideEffect और DisposableEffect API के पक्ष में, onCommit, onDispose, और onActive को बंद कर दिया गया है (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को जोड़ता है. इसे तब कॉल किया जाता है, जबrememberको पास किए गए कॉलबैक सेRememberObserverइंस्टेंस वापस आ जाता है. हालांकि, इसे कंपोज़िशन की स्थिति में याद नहीं रखा जाता. इसलिए, इसे कभी भी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)
- LaunchedTask का नाम बदलकर LaunchedEffect कर दिया गया है, ताकि यह SideEffect और DisposableEffect API के साथ अनुकूलता रख सके. सबसे सही तरीकों को बढ़ावा देने के लिए, LaunchedEffect में subject पैरामीटर के बिना इस्तेमाल करने की अनुमति नहीं है. (Ifd3d4)
- Applier के पास अब onBeginChanges/onEndChanges कॉलबैक हैं. इन्हें तब शुरू किया जाता है, जब Composer ट्री में बदलाव करना शुरू करता है या बदलाव करने की प्रोसेस पूरी हो जाती है. अगर ज़रूरत हो, तो इनका इस्तेमाल संसाधन मैनेजमेंट के लिए किया जा सकता है. (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 जोड़ा गया है, ताकि रीकंपोज़िशन से डेटा को चालू या लंबे समय तक चलने वाली प्रोसेस में पब्लिश किया जा सके. जैसे, DisposableEffects या LaunchedTasks.
- (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)
- derivedStateOf API जोड़ा गया है. इससे, कैलकुलेशन के आधार पर State ऑब्जेक्ट बनाए जा सकते हैं. यह कैलकुलेशन, अन्य 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)
ऐसी समस्या को ठीक किया गया है जिसमें for लूप के अंदर, स्थिति को सेव करने वाली किसी चीज़ का इस्तेमाल करने पर ऐप्लिकेशन क्रैश हो जाता था. अब savedInstanceState() में एक ही कुंजी का इस्तेमाल किया जा सकता है. UiSavedStateRegistry का एपीआई, अब इस नई ज़रूरत के हिसाब से काम करेगा (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
गड़बड़ियां ठीक की गईं
emitViewका अब इस्तेमाल नहीं किया जा सकता. अगर हो सके, तो Compose में व्यू दिखाने के लिएAndroidViewका इस्तेमाल करें. ध्यान दें कि आने वाले समय में, व्यू और व्यूग्रुप को सीधे तौर पर कंपोज़ करने की सुविधा काम नहीं करेगी. ऐसा तब तक नहीं होगा, जब तक ये कंपोज़िशन ट्री में लीफ़ न हों. ऐसा 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()को असाइन किया जाता है.mutableStateOf(),ambientOf(), औरsavedInstanceStateOf()को किए गए कॉल में नीति पैरामीटरpolicy = referentialEqualityPolicy()जोड़कर, पहले जैसा व्यवहार वापस लाया जा सकता है. (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एपीआई की मदद से, इस तरीके को आसान बनाया गया है. एपीआई की मदद से, कंपोज़िशन के बाहर 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 के कंपाइलर की कोड जनरेशन रणनीति को बदलता है. बदलाव से पहले, कंपोज़ कंपाइलर, कंपोज़ेबल फ़ंक्शन को कॉल में बदल देता था. इस बदलाव के बाद, हम कंपोज़ेबल फ़ंक्शन के मुख्य हिस्से को बदल देते हैं और कॉलसाइट में कोई बदलाव नहीं करते.
इसका मतलब है कि कंपोज़ रनटाइम के साथ कम्यूनिकेट करने वाला ज़्यादातर लॉजिक, कॉलसाइट के बजाय फ़ंक्शन बॉडी की शुरुआत में होता है.
यह बदलाव, कंपोज़ फ़ंक्शन के सभी इस्तेमाल के लिए सोर्स के साथ काम करने वाला होना चाहिए. 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 में sortWith और removeRange जोड़ा गया (Icccf7)
CompositionLifecycleObserver के लिए, डिफ़ॉल्ट तरीके लागू किए गए (I24289)
ऐप्लिकेशन को अब कंपोज़िशन (Ibe697) को हटाने के लिए, clear() तरीके की ज़रूरत होती है
MutableVector में asMutableList() जोड़ा गया है, ताकि पूरी सूची को कॉपी किए बिना इसे सार्वजनिक एपीआई में पास किया जा सके. (I298df)
इवेंट के जवाब में जॉब लॉन्च करने के लिए, कंपोज़िशन में मैनेज किया गया CoroutineScope पाने के लिए, rememberCoroutineScope() जोड़ा गया. (I0e264)
MutableVector एक नया कलेक्शन है. यह किसी भी स्टैंडर्ड कलेक्शन इंटरफ़ेस को लागू नहीं करता है. यह कलेक्शन, अन्य ज़रूरी शर्तों के मुकाबले ज़्यादा तेज़ी से काम करता है. इसका इस्तेमाल सिर्फ़ इंटरनल कामों के लिए किया जाता है. (I8ebd6)
Kotlin Compose के वर्शन में आने वाली समस्या से बचने के लिए,
StableMutableListऔरStableMutableMapको कुछ समय के लिए हटा दिया गया है. Compose को Kotlin के ऐसे वर्शन पर अपडेट करने के बाद इन इंटरफ़ेस को फिर से शामिल किया जाएगा जिसमें यह समस्या नहीं है.SnapshotStateListऔरSnapshotStateMapअब सार्वजनिक हैं. हालांकि,StableMutableListऔरStableMutableMapको वापस लाने के बाद, इन्हें बंद कर दिया जाएगा. (Ia7769)ऐनिमेशन के समय के लिए, टॉप-लेवल का withFrameNanos फ़ंक्शन जोड़ा गया (Ie34c5)
@Untracked एनोटेशन का इस्तेमाल बंद कर दिया गया है. @ComposableContract(tracked=false) से बदलें (Id211e)
RestartableFunction और इससे जुड़े एपीआई का नाम बदलकर ComposableLambda वगैरह कर दिया गया है. इन एपीआई को सिर्फ़ कंपाइलर टारगेट करता था. इसलिए, इससे सोर्स लेवल की कंपैटिबिलिटी पर आम तौर पर कोई असर नहीं पड़ना चाहिए. नाम बदलने का मुख्य मकसद यह बताना था कि स्टैक ट्रेस (I7eb25) में दिखने पर यह क्लास बेहतर तरीके से क्या काम करती है
@Composable एनोटेशन अब क्लास पर मान्य नहीं है (Ia5f02)
Ambient<T>अब @Immutable के बजाय @Stable है (I0b4bb)इस बदलाव से पहले, अगर कोई (I5205a, b/158123804) मौजूद होता था, तो कंपोज़ कंपाइलर प्लगिन, @Composable फ़ंक्शन के अंदर कंस्ट्रक्टर को कॉल करने के अनुरोधों को इंटरसेप्ट कर लेता था.
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() के नए फ़ंक्शन, ताकि कस्टम Saver ऑब्जेक्ट लिखना आसान हो (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 को फिर से फ़ैक्टर किया गया है, ताकि कोड पाथ को कम किया जा सके. साथ ही, कंपोज़िशन के हिस्से के तौर पर Modifier बनाने की ज़रूरत को हटाया जा सके. (I0343a)
- ज़्यादा लेवल वाले Compose API अपडेट किए गए हैं. ये Canvas को CanvasScope के बजाय Canvas को दिखाते हैं. इससे उपभोक्ताओं को अपने Paint ऑब्जेक्ट बनाए रखने की ज़रूरत नहीं पड़ती. जिन उपभोक्ताओं को अब भी 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)