लाइफ़साइकल
इस टेबल में, androidx.lifecycle ग्रुप के सभी आर्टफ़ैक्ट की सूची दी गई है.
| सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| lifecycle-* | 2.10.0 | - | - | 2.11.0-alpha02 |
| lifecycle-viewmodel-navigation3 | 2.10.0 | - | - | 2.11.0-alpha02 |
डिपेंडेंसी का एलान करना
Lifecycle पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.10.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0-alpha02" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.10.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0-alpha02") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.10.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.10.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 2.11
वर्शन 2.11.0-alpha02
11 मार्च, 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha02 रिलीज़ हो गया है. वर्शन 2.11.0-alpha02 में ये बदलाव शामिल हैं.
स्कोप किए गए ViewModels
इस रिलीज़ में, Compose में स्कोप किए गए
ViewModelStoreइंस्टेंस बनाने के लिए एपीआई पेश किए गए हैं. इससेViewModelsको यूज़र इंटरफ़ेस (यूआई) के खास स्कोप (जैसे, अलग-अलगPagerपेज याLazyListआइटम) से जोड़ा जा सकता है. येViewModelsकॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. जब इनसे जुड़े कंपोज़ेबल को हाइरार्की से हमेशा के लिए हटा दिया जाता है, तब ये अपने-आप मिट जाते हैं.// Hoist the parent provider outside the Pager. val provider = rememberViewModelStoreProvider() val pagerState = rememberPagerState(pageCount = { 5 }) HorizontalPager(state = pagerState) { page -> // Create an owner scoped to the current page. val storeOwner = rememberViewModelStoreOwner(provider, key = page) // Provide the scoped owner to this composition. CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) { // ViewModel is now scoped specifically to this page. val viewModel: PageViewModel = viewModel() } }
ध्यान दें कि ViewModelStoreProvider, कंपोज़ के बाहर उपलब्ध है. इसका इस्तेमाल ऐक्टिविटी, फ़्रैगमेंट, और/या व्यू के साथ किया जा सकता है.
नई सुविधाएं
- ViewModel Navigation3 में, सभी केएमपी टारगेट के लिए सपोर्ट जोड़ा गया. (I60fa5)
- कस्टम ओनर कॉम्पोनेंट बनाते समय, बॉयलरप्लेट को कम करने के लिए
LifecycleOwner,ViewModelStoreOwner, औरSavedStateRegistryOwnerके लिए फ़ैक्ट्री फ़ंक्शन जोड़ें. (I9682c) - बिना नाम वाले ऑब्जेक्ट को इंस्टैंटिएट किए बिना लाइफ़साइकल इवेंट को देखने की अनुमति देने के लिए, lambda पर आधारित
Lifecycle.addObserverएक्सटेंशन फ़ंक्शन जोड़ें. (I94f38) ViewModelStoreOwnerमेंdefaultViewModelProviderFactoryऔरdefaultViewModelCreationExtrasएक्सटेंशन जोड़ें. इनसे डिफ़ॉल्ट वैल्यू को सुरक्षित तरीके से ऐक्सेस किया जा सकता है. इसके लिए,HasDefaultViewModelProviderFactoryके हिसाब से मैन्युअल टाइप की जांच करने की ज़रूरत नहीं होती. (Ifa83d)
एपीआई में हुए बदलाव
- Compose में स्कोप किए गए
ViewModelStoreOwnerआसानी से बनाने के लिए,rememberViewModelStoreOwnerजोड़ें. यह फ़ंक्शन, Composable के लाइफ़साइकल से जुड़ा एक ऐसा मालिक दिखाता है जो Composable को यूज़र इंटरफ़ेस (यूआई) से हटाए जाने पर, उसके ViewModels को अपने-आप मिटा देता है. (I2a15b, b/165642391) - Compose में स्कोप किए गए
ViewModelStoreइंस्टेंस बनाने की अनुमति देने के लिए,rememberViewModelStoreProviderजोड़ें. यह फ़ंक्शन, चाइल्ड स्टोर को पैरंट स्टोर के मालिक से लिंक करता है. इससे यह पक्का होता है कि कॉन्फ़िगरेशन में बदलाव होने पर भी ViewModels बने रहें. साथ ही, जब Composable को क्रम से हटा दिया जाता है, तो वे अपने-आप हट जाते हैं. (I0f57a, b/165642391) - स्कोप किए गए
ViewModelStoreइंस्टेंस को मैनेज करने के लिए,ViewModelStoreProviderजोड़ें. इस क्लास की मदद से, ऐसे चाइल्ड स्कोप बनाए जा सकते हैं जो कॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. हालांकि, इन्हें अलग से हटाया जा सकता है. यहViewModelStoreOwnerरैपर भी उपलब्ध कराता है, जो पैरंट से डिफ़ॉल्ट फ़ैक्ट्रियां और क्रिएशन एक्स्ट्रा इनहेरिट करते हैं. (I87f4f, b/434651920)
वर्शन 2.11.0-alpha01
25 फ़रवरी, 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha01 रिलीज़ हो गया है. वर्शन 2.11.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- ViewModel-Compose में सभी Kotlin Multiplatform (केएमपी) टारगेट के लिए सहायता उपलब्ध है. मालिक की समस्या को
LocalViewसे अलग करें, ताकि प्लैटफ़ॉर्म होस्ट, डिफ़ॉल्टViewModelStoreOwnerउपलब्ध करा सकें. साथ ही, Android परLocalViewको सुरक्षित फ़ॉलबैक के तौर पर बनाए रख सकें. (I09fab, b/434940570, Ic8526, b/478146897)
एपीआई में हुए बदलाव
ViewModelStoreमेंtoStringलागू करें. इससे, सेव की गई सभी कुंजियों की सूची दिखेगी. इससे डीबग करने में आसानी होगी. (I0a6f4)HasDefaultViewModelProviderFactory.defaultViewModelProviderFactoryके लिए डिफ़ॉल्ट सेटिंग जोड़ी गई है. इसका मतलब है कि इंटरफ़ेस लागू करते समय, अब आपको इस प्रॉपर्टी को साफ़ तौर पर बदलने की ज़रूरत नहीं है. (Ia7095)ViewModel.onClearedको@EmptySuperके साथ एनोटेट करें, ताकि साफ़ तौर पर यह बताया जा सके कि ओवरराइड करने वाले तरीकों कोsuper.onCleared()को कॉल करने की ज़रूरत नहीं है. (I8c226)
वर्शन 2.10
वर्शन 2.10.0
19 नवंबर, 2025
androidx.lifecycle:lifecycle-*:2.10.0 रिलीज़ हो गया है. वर्शन 2.10.0 में ये बदलाव शामिल हैं.
2.9.0 के बाद हुए मुख्य बदलाव:
यूज़र इंटरफ़ेस (यूआई) में सीधे तौर पर स्कोप किए गए लाइफ़साइकल बनाने के लिए,
rememberLifecycleOwnerकंपोज़ेबल जोड़ें. यह उन कॉम्पोनेंट के लिए फ़ायदेमंद है जिन्हें अपने लाइफ़साइकल को अलग से मैनेज करना होता है. जैसे,HorizontalPagerजो सिर्फ़ मौजूदा पेज कोRESUMEDबनाना चाहता है या Navigation3 जैसी लाइब्रेरी:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }lifecycle-viewmodel-navigation3आर्टफ़ैक्ट, Navigation3 के लिए पहले से बना इंटिग्रेशन उपलब्ध कराता है. इससे,rememberViewModelStoreNavEntryDecorator()एपीआई का इस्तेमाल करके,ViewModelइंस्टेंस को अलग-अलग स्क्रीन (‘entries’) के लिए स्कोप किया जा सकता है:@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }CreationExtrasके लिए बिल्डर फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. इससे Kotlin API का इस्तेमाल ज़्यादा आसानी से किया जा सकेगा.override val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }SavedStateHandle.savedमें बिना किसी वैल्यू वाले टाइप के लिए नेटिव सपोर्ट को जोड़ा गया है. इससे, इस तरह की वैल्यू स्वीकार करने वाली प्रॉपर्टी को सेव करना और वापस लाना आसान हो जाता है.SavedStateHandleकंस्ट्रक्टर को@VisibleForTestingके तौर पर मार्क करें.minSdk को एपीआई 21 से बदलकर एपीआई 23 कर दिया गया है.
वर्शन 2.10.0-rc01
05 नवंबर, 2025
androidx.lifecycle:lifecycle-*:2.10.0-rc01 रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-beta01
22 अक्टूबर, 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ViewModelStoreNavEntryDecoratorDefaultका नाम बदलकरViewModelStoreNavEntryDecoratorDefaultsकर दिया गया है. (I6d27b, b/444447434)
गड़बड़ियां ठीक की गईं
rememberLifecycleOwnerमें अब क्रैश नहीं होता है. ऐसा तब होता है, जब मालिक कोLifeycle.State.CREATEDपर जाने से पहलेLifecycle.Event.ON_DESTROYइवेंट मिलता है. (I6f98e, b/444594991)
वर्शन 2.10.0-alpha05
08 अक्टूबर, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 रिलीज़ हो गया है. वर्शन 2.10.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
removeViewModelStoreOnPopCallback()अबViewModelStoreNavEntryDecoratorDefaultऑब्जेक्ट का हिस्सा है. अन्य प्लैटफ़ॉर्म और लागू करने वाले लोग, डिफ़ॉल्ट को कॉल कर सकते हैं. (Ia1f23, b/444447434)ViewModelStoreNavEntryDecoratorको फ़ंक्शन से क्लास में बदला गया है, ताकिNavEntryDecoratorके लिए फ़ैक्ट्री के तौर पर इसकी फ़ंक्शनैलिटी को बेहतर तरीके से दिखाया जा सके. साथ ही, डेकोरेटर केshouldRemoveViewModelStoreपैरामीटर का नाम बदलकरremoveViewModelStoreOnPopकर दिया गया है, ताकि यह साफ़ तौर पर बताया जा सके कि यह कॉलबैक सिर्फ़ तब शुरू होता है, जबbackStackसे कोई एंट्री हटाई जाती है. (Iefdc5, b/444447434)
वर्शन 2.10.0-alpha04
24 सितंबर, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LifecycleOwnerकंपोज़ेबल कोrememberLifecycleOwnerमें बदल दो. अब यह फ़ंक्शन सीधे तौर परLifecycleOwnerदिखाता है. किसी सब-कंपोज़िशन के लिए इस मालिक को उपलब्ध कराने के लिए,CompositionLocalProviderका इस्तेमाल करें. (Ic57f0, b/444446629)- लाइफ़साइकल-व्यूमॉडल-नेविगेशन3 में केएमपी स्टब जोड़ें, ताकि JetBrains ऐसे फ़ोर्क उपलब्ध करा सके जो इन टारगेट को पूरा करते हैं और इस तरह सीएमपी को सपोर्ट करते हैं. (I44a4c)
वर्शन 2.10.0-alpha03
27 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose को 1.9.0 पर अपडेट करें. (I2b9de)
वर्शन 2.10.0-alpha02
13 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
LifecycleOwnerकंपोज़ेबल अब स्टैंडअलोन रूट लाइफ़साइकल बना सकता है.parent = nullको साफ़ तौर पर सेट करने पर, नया लाइफ़साइकल किसी भी होस्ट (जैसे किActivity,FragmentयाNavBackStackEntry) से अलग काम करता है. यह कंपोज़ेबल के कंपोज़िशन में शामिल होते ही शुरू हो जाता है और कंपोज़िशन से हटते ही अपने-आप बंद हो जाता है. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
एपीआई में हुए बदलाव
LifecycleOwnerकंपोज़ेबल में,parentLifecycleOwnerपैरामीटर का नाम बदलकरparentकर दिया गया है. (I080bc)
गड़बड़ियां ठीक की गईं
LifecycleOwnerअब डिस्पोज़ल के बाद, कंपोज़ेबल का लाइफ़साइकल सही तरीके सेDESTROYEDपर चला जाता है. इससे, लाइफ़साइकल का रेफ़रंस रखने वाले बाहरी कोड के लिए संभावित लीक को रोका जा सकता है. (I9e5b7, b/433659048)- डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
बाहरी योगदान
LifecycleOwnerसे गैर-ज़रूरी इंटरनल बैकिंग फ़ील्ड हटाएं. योगदान देने के लिए, Jake Wharton का धन्यवाद. (Ideddb)
वर्शन 2.10.0-alpha01
30 जुलाई, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 रिलीज़ हो गया है. वर्शन 2.10.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
यूज़र इंटरफ़ेस (यूआई) में सीधे तौर पर स्कोप किए गए लाइफ़साइकल बनाने के लिए,
LifecycleOwnerकंपोज़ेबल जोड़ें. यह उन कॉम्पोनेंट के लिए काम का है जिन्हें अपनी लाइफ़साइकल को अलग से मैनेज करना होता है. Navigation3 इस नए कंपोज़ेबल को कैसे इंटिग्रेट करता है, इसका उदाहरण देखने के लिए aosp/3708610 देखें. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
एपीआई में हुए बदलाव
CreationExtrasके लिए बिल्डर फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. इससे Kotlin API का इस्तेमाल ज़्यादा आसानी से किया जा सकेगा. (Iab2bd)SavedStateHandle.savedमें बिना किसी वैल्यू वाले टाइप के लिए नेटिव सपोर्ट को जोड़ा गया है. इससे, इस तरह की वैल्यू स्वीकार करने वाली प्रॉपर्टी को सेव करना और वापस लाना आसान हो जाता है. (I54d69, b/421325690)SavedStateHandleकंस्ट्रक्टर को@VisibleForTestingके तौर पर मार्क करें. (Iff0e0, b/408002794)
वर्शन 2.9
वर्शन 2.9.4
17 सितंबर, 2025
androidx.lifecycle:lifecycle-*:2.9.4 रिलीज़ हो गया है. वर्शन 2.9.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose कंपाइलर प्लगिन लागू न होने की गड़बड़ी को ठीक किया गया है. इसकी वजह से, लाइफ़साइकल केएमपी आर्टफ़ैक्ट काम नहीं कर रहे थे. (Ie95bc, b/443096483, b/443965665)
वर्शन 2.9.3
27 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.9.3 रिलीज़ हो गया है. वर्शन 2.9.3 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Lifecycle
*-composeआर्टफ़ैक्ट में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए. Lifecycle अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). (I0a0e4)
गड़बड़ियां ठीक की गईं
androidx.annotationको 1.9.1 पर अपडेट करें (Ic9e4f, b/397701294)
वर्शन 2.9.2
16 जुलाई, 2025
androidx.lifecycle:lifecycle-*:2.9.2 रिलीज़ हो गया है. वर्शन 2.9.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल आर्टफ़ैक्ट में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए. Lifecycle अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). ध्यान दें कि
*-composeआर्टफ़ैक्ट में कोई नया केएमपी टारगेट नहीं जोड़ा गया है, क्योंकि यह Compose 1.9 की स्टेबल रिलीज़ पर निर्भर करता है. (I01cb8).
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल अब एनोटेशन
1.9.1पर निर्भर करता है, ताकि नए केएमपी टारगेट (Ic9e4f, b/397701294) के लिए सहायता चालू की जा सके.
वर्शन 2.9.1
4 जून, 2025
androidx.lifecycle:lifecycle-*:2.9.1 रिलीज़ हो गया है. वर्शन 2.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SavedStateHandle.remove(key)केSavedStateHandle.getMutableStateFlow(key)स्टेटस को हटाने से जुड़ी समस्या ठीक की गई. (d5f939, b/418746333)
वर्शन 2.9.0
7 मई, 2025
androidx.lifecycle:lifecycle-*:2.9.0 रिलीज़ हो गया है. वर्शन 2.9.0 में ये बदलाव शामिल हैं.
2.8.0 के बाद हुए अहम बदलाव
- एक नया
androidx.lifecycle:lifecycle-viewmodel-testingकेएमपी आर्टफ़ैक्ट उपलब्ध है. यहViewModelsको अलग से टेस्ट करने के लिए,ViewModelScenarioक्लास उपलब्ध कराता है. इसमेंonClearedऔरSavedStateHandleके साथ-साथ,recreate()के ज़रिए प्रोसेस के बंद होने और फिर से शुरू होने की टेस्टिंग की सुविधा भी मिलती है. MutableStateFlowको वापस पाने के लिए,SavedStateHandleमेंgetMutableStateFlowजोड़ें. यह नया फ़ंक्शन, सिर्फ़ कुंजी के लिए उपलब्ध है. इसका इस्तेमालgetLiveDataके साथ नहीं किया जा सकता. अगर एक ही स्थिति को ऐक्सेस करने के लिए, दोनों का इस्तेमाल किया जाता है, तो इसे अपवाद माना जाएगा.CreationExtrasमें अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट में आसानी से बदलाव किया जा सके. इससेCreationExtrasके साथin,+=, और+का इस्तेमाल किया जा सकता है.
KotlinX Serialization Support
SavedState
1.3.0में KotlinX Serialization की सुविधा जोड़ी गई है. हमनेsavedको भी शामिल किया है. यह एक लेज़ी प्रॉपर्टी डेलिगेट है. इससे@Serializableक्लास कोSavedStateHandleमें आसानी से सेव किया जा सकता है. साथ ही, प्रोसेस बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें किsavedडेलिगेट लेज़ी है (ऐसी प्रॉपर्टी जो मेमोरी में सेव नहीं होती, बल्कि तब बनती है जब तक इसे ऐक्सेस नहीं किया जाता). इसलिए, जब तक इसे ऐक्सेस नहीं किया जाता, तब तक यहinitलैम्डा को कॉल नहीं करेगा याSavedStateHandleमें कुछ भी सेव नहीं करेगा.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
lifecycle-testingमॉड्यूल अब केएमपी के साथ काम करता है. इसमेंTestLifecycleOwnerजैसे एपीआई शामिल हैं.lifecycle-viewmodel-savedstateमॉड्यूल अब केएमपी के साथ काम करता है. इसमेंSavedStateHandleजैसे एपीआई शामिल हैं.androidx.compose.ui.platform.LocalLifecycleOwnerअब सामान्य सोर्स सेट में उपलब्ध है.NewInstanceFactoryअब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है.
व्यवहार में बदलाव
Lifecycle.DESTROYEDस्थिति में, किसी भी तरह का बदलाव नहीं किया जा सकता. इसलिए, अगर अब किसीLifecycle.DESTROYEDको इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश की जाती है, तोIllegalStateExceptionदिखेगा.LifecycleSavedStateHandleमें अब ऐसेSavedStateProvider.saveState()शामिल नहीं हैं जिनमेंBundleकी वैल्यू खाली है.
वर्शन 2.9.0-rc01
23 अप्रैल, 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 रिलीज़ हो गया है. वर्शन 2.9.0-rc01 में ये बदलाव शामिल हैं.
Lint API Compatibility Warning
- JetBrains ने
KaCallableMemberCallको क्लास से इंटरफ़ेस में बदल दिया है. इससे बाइनरी कंपैटिबिलिटी टूट जाती है. अगर आपके प्रोजेक्ट का AGP वर्शन, लिंट चेक को कंपाइल करने के लिए इस्तेमाल किए गए वर्शन से अलग है, तो इससे क्रैश हो सकता है. यह अपडेट aosp/3577172 में किया गया था, लेकिन रिलीज़ नोट में मौजूद नहीं था. हम यहां इसकी जानकारी दे रहे हैं. सुझाया गया तरीका: AGP के नए और स्टेबल वर्शन पर अपडेट करें. अगर आपको पूरा अपडेट नहीं करना है, तोandroid.experimental.lint.versionका इस्तेमाल करके, अपने एजीपी वर्शन के साथ लिंट जांचों को अलाइन करें. ज़्यादा जानकारी के लिए, Compose Runtime के व्यवहार में हुए बदलाव देखें.
वर्शन 2.9.0-beta01
9 अप्रैल, 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 रिलीज़ हो गया है. वर्शन 2.9.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Lifecycle ViewModel Composeअब Compose Runtime 1.7.1 और इसके बाद के वर्शन की तरह ही Kotlin Multiplatform सेटअप का इस्तेमाल करता है.-desktopआर्टफ़ैक्ट अब हटा दिए गए हैं और-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके. (I5cb14, b/406592090)
डिपेंडेंसी से जुड़े अपडेट
- यह लाइब्रेरी अब Kotlin 2.0 के भाषा लेवल को टारगेट करती है. इसके लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है. (Idb6b5)
Lifecycle ViewModel Composeअब Compose 1.7.8 पर निर्भर करता है. (I5cb14, b/406592090)
वर्शन 2.9.0-alpha13
26 मार्च, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 2.9.0-alpha13 में ये बदलाव शामिल हैं.
वर्शन 2.9.0-alpha12
12 मार्च, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 रिलीज़ हो गया है. वर्शन 2.9.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@MainThreadएनोटेशन कोViewModelProvider.getमें जोड़ा गया. यह एनोटेशन, केएमपी के सभी प्लैटफ़ॉर्म पर काम करता है. (I7e8dd, b/397736115)SavedState*Delegatesका नाम बदलकरSavedState*Delegateकरें. (I8589b, b/399629301)
वर्शन 2.9.0-alpha11
26 फ़रवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 रिलीज़ हो गया है. वर्शन 2.9.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
saved()डेलिगेट (I39b3a) मेंSavedStateConfigपैरामीटर जोड़ा गया
वर्शन 2.9.0-alpha10
12 फ़रवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 रिलीज़ हो गया है. वर्शन 2.9.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MutableStateSerializerकोlifecycle-viewmodel-composeसेsavedstate-composeमें ले जाएं. (I4f690, b/378895074)
बाहरी योगदान
- यह कंपोज़िशन में
Lifecycle::currentStateको कॉल करने के लिए, नई लिंट समस्या जोड़ता है. इसके बजाय,currentStateAsalue().valueका इस्तेमाल करने का सुझाव देता है, ताकि यह पक्का किया जा सके कि लाइफ़साइकल की स्थिति में बदलाव होने पर, कंपोज़िशन सही तरीके से फिर से हो. धन्यवाद स्टीवन शोएन! (Iad484)
वर्शन 2.9.0-alpha09
29 जनवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 रिलीज़ हो गया है. वर्शन 2.9.0-alpha09 में ये बदलाव शामिल हैं.
नई सुविधाएं
androidx.compose.runtime.MutableStateको क्रम में लगाने के लिए,MutableStateSerializerजोड़े गए. (Idfc48, b/378895074)
एपीआई में हुए बदलाव
- डिफ़ॉल्ट पैरामीटर (Icd1c1) के साथ, ओवरलोड किए गए
SavedStateHandle.saved()डेलिगेट फ़ंक्शन बदले गए हैं AbstractSavedStateViewModelFactoryके इस्तेमाल पर पाबंदी लगा दी गई है, क्योंकि यह हरViewModelके लिए एकSavedStateHandleबनाता है. इससे बेवजह का ओवरहेड होता है.ViewModelको ज़्यादा असरदार बनाने के लिए,CreationExtras.createSavedStateHandleके साथViewModelProvider.Factoryका इस्तेमाल करें. (Ia920b, b/388590327)
वर्शन 2.9.0-alpha08
11 दिसंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 रिलीज़ हो गया है. वर्शन 2.9.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
- सिस्टम प्रोसेस डेथ को सिम्युलेट करने के लिए,
ViewModelScenario.recreateजोड़ें. इससे, टेस्ट किए जा रहेViewModelऔर उससे जुड़े सभी कॉम्पोनेंट फिर से बन जाएंगे. (Id6a69, b/381063087) findViewTreeएपीआई के ज़रिए वापस लाए गएLifecycleOwnerऔरViewModelStoreOwnerइंस्टेंस को अब व्यू के अलग-अलग पैरंट के ज़रिए हल किया जा सकता है. जैसे,ViewOverlay. व्यू के अलग-अलग पैरंट के बारे में ज़्यादा जानने के लिए, कोर के रिलीज़ नोट याViewTree.setViewTreeDisjointParentमें मौजूद दस्तावेज़ देखें. (I800f4)
एपीआई में हुए बदलाव
- नाम रखने के तरीके और पैकेज के संगठन को
SavedStateRegistryOwnerDelegate(I8c135, b/376026744) के साथ ज़्यादा अनुकूल बनाएं
गड़बड़ियां ठीक की गईं
- यह लाइब्रेरी अब JSpecify के nullness एनोटेशन का इस्तेमाल करती है. ये एनोटेशन, टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस आर्ग्युमेंट का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict(यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से चालू होता है). (Ie4340, b/326456246) - दस्तावेज़
ViewModel.onClearedसाफ़ करने का क्रम. (I586c7, b/363984116)
वर्शन 2.9.0-alpha07
13 नवंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 रिलीज़ हो गया है. वर्शन 2.9.0-alpha07 में ये बदलाव शामिल हैं.
Kotlin Multiplatform के साथ काम करने की सुविधा
- लाइफ़साइकल
ViewModel SavedStateअब केएमपी के साथ काम करता है. इससे आपको सामान्य कोड मेंSavedStateHandleका इस्तेमाल करने की अनुमति मिलती है. (Ib6394, b/334076622)
KotlinX Serialization Support
SavedState
1.3.0-alpha05में KotlinX Serialization की सुविधा जोड़ी गई है. हमनेsavedको भी शामिल किया है. यह एक लेज़ी प्रॉपर्टी डेलिगेट है. इससे@Serializableक्लास कोSavedStateHandleमें आसानी से सेव किया जा सकता है. साथ ही, प्रोसेस बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें किsavedडेलिगेट लेज़ी है (ऐसी प्रॉपर्टी जो मेमोरी में सेव नहीं होती, बल्कि तब बनती है जब तक इसे ऐक्सेस नहीं किया जाता). इसलिए, जब तक इसे ऐक्सेस नहीं किया जाता, तब तक यहinitलैम्डा को कॉल नहीं करेगा याSavedStateHandleमें कुछ भी सेव नहीं करेगा. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
एपीआई में हुए बदलाव
MutableStateFlowको वापस पाने के लिए,SavedStateHandleमेंgetMutableStateFlowजोड़ें. यह नया फ़ंक्शन, सिर्फ़ कुंजी के लिए उपलब्ध है. इसका इस्तेमालgetLiveDataके साथ नहीं किया जा सकता. अगर एक ही स्थिति को ऐक्सेस करने के लिए, दोनों का इस्तेमाल किया जाता है, तो इसे अपवाद माना जाएगा. (I04a4f, b/375408415)
वर्शन 2.9.0-alpha06
30 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 रिलीज़ हो गया है. वर्शन 2.9.0-alpha06 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
Lifecycle.DESTROYEDस्थिति में, किसी भी तरह का बदलाव नहीं किया जा सकता. इसलिए, अगर अब किसीLifecycle.DESTROYEDको इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश की जाती है, तोIllegalStateExceptionदिखेगा.Lifecycle(I116c4, b/370577987)SavedStateHandleमें अब ऐसेSavedStateProvider.saveState()शामिल नहीं हैं जिनमेंBundleकी वैल्यू खाली है. (I910b5, b/370577987)
गड़बड़ियां ठीक की गईं
Lifecycle.eventFlowअब सही तरीके से पूरा होता है, जबLifecycleDESTROYEDहो (I293b2, b/374043130)
वर्शन 2.9.0-alpha05
16 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 2.9.0-alpha05 में ये बदलाव शामिल हैं.
वर्शन 2.9.0-alpha04
2 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 रिलीज़ हो गया है. वर्शन 2.9.0-alpha04 में ये बदलाव शामिल हैं.
Kotlin Multiplatform
lifecycle-viewmodel-savedstateमॉड्यूल को अब केएमपी के साथ काम करने के लिए कॉन्फ़िगर किया गया है. ऐसा इसलिए किया गया है, ताकिSavedStateHandleजैसे एपीआई को आने वाले समय में, सामान्य सोर्स सेट में उपलब्ध कराया जा सके. (I503ed, I48764, b/334076622)
वर्शन 2.9.0-alpha03
18 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 रिलीज़ हो गया है. वर्शन 2.9.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.6से:NullSafeMutableLiveDataलिंट की गड़बड़ी की जांच करने की सुविधा को स्मार्ट कास्ट के लिए बेहतर बनाया गया है. इससे फ़ॉल्स पॉज़िटिव से बचा जा सकता है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल
2.8.6से: लाइफ़साइकल रनटाइम कंपोज़ अब कंपोज़ रनटाइम1.7.1पर निर्भर करता है - लाइफ़साइकल रनटाइम अब ProfileInstaller
1.4.0पर निर्भर करता है
वर्शन 2.9.0-alpha02
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.5से:androidx.lifecycle.ReportFragmentProGuard के नियमों को अपडेट करें, ताकि कोड को अस्पष्ट करने की अनुमति दी जा सके . (ff898e1)
बाहरी योगदान
androidx.compose.ui.platform.LocalLifecycleOwnerको सामान्य सोर्स सेट (केएमपी) में ले जाएं. योगदान देने के लिए, JetBrains के इवान माटकोव को धन्यवाद. (8cd5d03)- लाइफ़साइकल
2.8.5से: SavedStateHandle.saveable` एक्सटेंशन डेलिगेट अब शून्य हो सकने वाली वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz को धन्यवाद. (0d78ea6)
वर्शन 2.9.0-alpha01
7 अगस्त, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये बदलाव शामिल हैं.
Kotlin Multiplatform
lifecycle-testingअब केएमपी के साथ काम करता है. (Iea41e)linuxArm64Kotlin Multiplatform टारगेट के लिए सहायता जोड़ी गई (I139d3, b/338268719)
नई सुविधाएं
androidx.lifecycle:lifecycle-viewmodel-testingकेएमपी का नया आर्टफ़ैक्ट उपलब्ध है. इसमेंViewModelScenarioक्लास है. इसकी मदद से, ViewModels को अलग से टेस्ट किया जा सकता है. यहonCleared(सभी प्लैटफ़ॉर्म) औरSavedStateHandle(सिर्फ़ Android) के साथ काम करता है. (337f68d, c9b3409, 9799a95c, b/264602919)ViewModelProviderकी मदद सेViewModelबनाने की सुविधा अब थ्रेड सेफ़ है. साथ ही,@MainThreadएनोटेशन हटा दिए गए हैं. (Ifd978, b/237006831)
एपीआई में हुए बदलाव
- बिना किसी नाम या वेब पते वाले
CreationExtras.Keyऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए,CreationExtras.Key()फ़ैक्ट्री फ़ंक्शन जोड़ा गया. (I970ee) CreationExtrasमें अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट में आसानी से बदलाव किया जा सके. इससेCreationExtrasके साथin,+=, और+का इस्तेमाल किया जा सकता है. (Ib4353)CreationExtrasअबequals,hashCode, औरtoStringतरीकों को लागू करता है. (Ib4353)NewInstanceFactoryअब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है. (d3d0892)- Kotlin लैंग्वेज के वर्शन 2.0 (I39df2) में, ऐप्लिकेशन को सुरक्षित तरीके से दिखाने के लिए इनलाइन एक्सटेंशन प्रॉपर्टी
गड़बड़ियां ठीक की गईं
- नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि AGP 7.3 या इसके बाद के वर्शन (जैसे, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग के ज़रिए यह काम अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (जैसे, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. AGP का इस्तेमाल न करने वाले क्लाइंट को D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (If6b4c, b/345472586)
वर्शन 2.8
वर्शन 2.8.7
30 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.8.7 रिलीज़ हो गया है. वर्शन 2.8.7 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
androidx.compose.ui.platform.LocalLifecycleOwnerअब कॉमन सोर्स सेट (केएमपी) में उपलब्ध है. (6a3f5b3)lifecycle-runtime-compose:desktopआर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubsऔर-linuxx64Stubsआर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके. (6a3f5b3)
वर्शन 2.8.6
18 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.8.6 रिलीज़ हो गया है. वर्शन 2.8.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveDataलिंट की गड़बड़ी की जांच करने वाली सुविधा को बेहतर बनाया गया है. अब यह स्मार्ट कास्ट के लिए बेहतर तरीके से काम करती है और गलत पहचान किए जाने की समस्या से बचती है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल रनटाइम कंपोज़ अब कंपोज़ रनटाइम
1.7.1पर निर्भर करता है
वर्शन 2.8.5
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.8.5 रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.lifecycle.ReportFragmentProGuard के नियमों को अपडेट करें, ताकि कोड को उलझाया जा सके . (ff898e1)
बाहरी योगदान
SavedStateHandle.saveableएक्सटेंशन डेलिगेट अब नल वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz को धन्यवाद. (0d78ea6)
वर्शन 2.8.4
24 जुलाई, 2024
androidx.lifecycle:lifecycle-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LiveData.asFlow()अब उन मामलों को सही तरीके से हैंडल करता है जहांLiveDataपर पहले से सेट की गई वैल्यू मिलने के बाद, लौटाया गया फ़्लो तुरंत पूरा हो जाता है. उदाहरण के लिए,take(1)का इस्तेमाल करते समय. (I9c566)Lifecycle*Effectअब आइडेमपोटेंट है.इसका मतलब है कि अगर लाइफ़साइकल बंद होने की वजह सेonStopOrDisposeको कॉल किया गया था, तो डिस्पोज़ल के बाद इसे दूसरी बार कॉल नहीं किया जाएगा. ऐसा तब तक होगा, जब तक लाइफ़साइकल फिर सेSTARTEDपर नहीं पहुंच जाता. (I5f607, b/352364595)
वर्शन 2.8.3
July 1, 2024
androidx.lifecycle:lifecycle-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोड श्रिंक करने की सुविधा का इस्तेमाल करते समय, Lifecycle 2.8 के Compose 1.6.0 और इससे पहले के वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (aosp/3133056, b/346808608)
वर्शन 2.8.2
12 जून, 2024
androidx.lifecycle:lifecycle-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose 1.6.X या इससे पहले के वर्शन के साथ Lifecycle 2.8.X का इस्तेमाल करते समय होने वाली
CompositionLocal LocalLifecycleOwner not presentगड़बड़ियों को ठीक किया गया है. अब Lifecycle 2.8.2 का इस्तेमाल, Compose के किसी भी वर्शन के साथ किया जा सकता है. इसके लिए, किसी अन्य समाधान की ज़रूरत नहीं है. (aosp/3105647, b/336842920) ViewModelProviderके पिछले वर्शन के साथcompileOnlyलाइफ़साइकल डिपेंडेंसी को मिक्स करने पर, अब क्रैश नहीं होगा.साथ ही, LeakCanary जैसी लाइब्रेरी से जुड़ी समस्याएं ठीक हो जाएंगी. (I80383, b/341792251)
वर्शन 2.8.1
29 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.1 रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब
lifecycle-viewmodel-composeसिर्फ़compose-runtimeपर निर्भर है.compose-uiपर निर्भरता हटा दी गई है. Android आर्टफ़ैक्ट, पुराने सिस्टम के साथ काम करने की सुविधा के लिएcompose-uiको बनाए रखता है. (aosp/3079334, b/339562627) - प्रॉपर्टी डेलिगेट का इस्तेमाल करके
ViewModelकेsaveableइंटिग्रेशन में, अब क्लास के नाम का इस्तेमाल अपने-आप जनरेट होने वाली कुंजी के हिस्से के तौर पर किया जाता है. इससे, अगर कई क्लास एक हीSavedStateHandleका इस्तेमाल करती हैं, तो टकराव से बचा जा सकता है. (aosp/3063463)
वर्शन 2.8.0
14 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए ज़रूरी बदलाव
LocalLifecycleOwnerको Compose यूज़र इंटरफ़ेस (यूआई) सेlifecycle-runtime-composeमें ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose यूज़र इंटरफ़ेस (यूआई) के बाहर इस्तेमाल किया जा सके.lifecycle-runtime-composeआर्टफ़ैक्ट में अबdropUnlessResumedऔरdropUnlessStartedएपीआई शामिल हैं. इनकी मदद से, क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. ये इवेंट,LifecycleOwnerके दिए गएLifecycle.Stateसे नीचे आने के बाद भी होते हैं. उदाहरण के लिए, इसका इस्तेमाल Navigation Compose के साथ किया जा सकता है. इससे, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को हैंडल करने से बचा जा सकता है:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }ViewModel.viewModelScopeअब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इससे आपको अपना डिसपैचर औरSupervisorJob()इंजेक्ट करने की अनुमति मिलती है. इसके अलावा,runTestमें उपलब्धbackgroundScopeका इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }ViewModelको Kotlin में फिर से लिखा गया है. अब यहCloseableके बजायAutoClosableका इस्तेमाल करता है. अब इसमेंkeyवालेAutoCloseableऑब्जेक्ट जोड़ने की सुविधा उपलब्ध है. इससेgetCloseable()के ज़रिए उन्हें वापस पाया जा सकता है.अब बिना कुंजी के
LifecycleStartEffectऔरLifecycleResumeEffectको कॉल करने पर गड़बड़ी होती है. यहDisposableEffectएपीआई के लिए इस्तेमाल किए जाने वाले तरीके के मुताबिक है.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)की जगह अबLiveData.toPublisher(lifecycleOwner)का इस्तेमाल किया जाता है.lifecycle-livedata-core-ktxकोटलिन एक्सटेंशन को अबlifecycle-livedata-coreमॉड्यूल में ट्रांसफ़र कर दिया गया है.NullSafeMutableLiveDataको फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो.
लाइफ़साइकल Kotlin Multiplatform के साथ काम करता है
Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event, और LifecycleRegistry में मौजूद मुख्य लाइफ़साइकल एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं.
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-commonज़्यादातर एपीआई कोcommonपर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtimeज़्यादातर एपीआई कोcommonपर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtime-ktxअब खाली है. सभी एपीआई कोlifecycle-runtimeमें ट्रांसफ़र कर दिया गया है.lifecycle-runtime-composeसभी एपीआई कोcommonपर ले जाता है औरandroidx.composeके मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट शिप करता है.
ViewModel Kotlin Multiplatform के साथ काम करता है
lifecycle-viewmodel आर्टफ़ैक्ट और ViewModel, ViewModelStore, ViewModelStoreOwner, और ViewModelProvider जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं.
इस बदलाव को लागू करने के लिए, ViewModelProvider पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो पहले java.lang.Class<T> लेता था. अब यह kotlin.reflect.KClass<T> लेता है.
Android पर बाइनरी फ़ाइल के साथ काम करने की सुविधा को बनाए रखा गया है. हालांकि, Android API की तुलना में सामान्य एपीआई में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProviderइंस्टेंस को सीधे तौर पर कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()तरीकों से बनाया जाता है. ViewModelProvider.NewInstanceFactoryऔरViewModelProvider.AndroidViewModelFactoryसिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री,
ViewModelProvider.Factoryसे एक्सटेंड करें औरcreateतरीके का इस्तेमाल करें. यह तरीका,CreationExtrasलेता है याviewModelFactoryKotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री,
- गैर-JVM प्लैटफ़ॉर्म पर कस्टम फ़ैक्ट्री के बिना
ViewModelProviderका इस्तेमाल करने पर,UnsupportedOperationExceptionमिलेगा. JVM प्लैटफ़ॉर्म पर, अगर कस्टम फ़ैक्ट्री नहीं दी जाती है, तो no-args ViewModel कंस्ट्रक्टर का इस्तेमाल करके कंपैटिबिलिटी बनाए रखी जाती है. viewModelScopeउन प्लैटफ़ॉर्म परEmptyCoroutineContextपर फ़ॉलबैक करेगा जहांDispatchers.Mainउपलब्ध नहीं है. उदाहरण के लिए, Linux.
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-viewmodelज़्यादातर एपीआई कोcommonपर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-viewmodel-ktxअब खाली है. सभी एपीआई कोlifecycle-viewmodelमें ट्रांसफ़र कर दिया गया है.lifecycle-viewmodel-composeसभी एपीआई कोcommonपर ले जाता है औरandroidx.composeके मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट शिप करता है.
व्यवहार में बदलाव
InitializerViewModelFactory(इसमेंviewModelFactoryबिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentExceptionदिखाएगा. ऐसा तब होगा, जब एक हीclazz: KClass<VM : ViewModel>वालाinitializerपहले ही जोड़ा जा चुका हो. (Ic3a36)
मौजूदा समस्याएं
lifecycle-*:2.8.0के लिए, Compose का कम से कम 1.7.0-alpha05 वर्शन होना ज़रूरी है (b/336842920).
वर्शन 2.8.0-rc01
1 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
lifecycle-commonक्लास के लिए, बेसलाइन प्रोफ़ाइल को सही तरीके से पैकेज न करने की समस्या को ठीक किया गया है. इन्हें अबlifecycle-runtimeAAR में पैकेज किया गया है. (aosp/3038274, b/322382422)- हमने ViewModel से जुड़े
AutoCloseableइंस्टेंस को हटाने के क्रम में हुए अनचाहे बदलाव को ठीक कर दिया है.addCloseable(String, AutoCloseable),addClosable(AutoCloseable), और फिरonCleared()के पिछले क्रम को वापस ला दिया गया है. (aosp/3041632) - नेटिव और JVM डेस्कटॉप एनवायरमेंट के लिए,
viewModelScopeके डिफ़ॉल्ट क्रिएशन बिहेवियर को बेहतर बनाया गया है. (aosp/3039221)
बाहरी योगदान
- JVM Desktop पर मुख्य थ्रेड की जांच करने की सुविधा को बेहतर बनाने के लिए, Victor Kropp का धन्यवाद. (aosp/3037116)
वर्शन 2.8.0-beta01
17 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01 रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-composeआर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके कोड कोcommonमें ले जाया गया है. साथ ही, यहandroidx.composeके लिए मल्टीप्लेटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. (If7a71, I4f4a0, b/331769623)
वर्शन 2.8.0-alpha04
3 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-composeआर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके कोड कोcommonमें ले जाया गया है. साथ ही, यहandroidx.composeकी मल्टीप्लेटफ़ॉर्म सुविधा के साथ काम करने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. इस बदलाव को लागू करने के लिए, कंपोज़ेबलviewModelतरीके में अबjava.lang.Classके साथ-साथKClassभी स्वीकार किया जाता है. (b/330323282)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveDataको फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो. (I2d8c1, Iafb18, I03463, I7ecef)
डिपेंडेंसी अपडेट
lifecycle-viewmodel-composeआर्टफ़ैक्ट अब Compose 1.6.0 पर निर्भर करता है.- लाइफ़साइकल अब Profile Installer 1.3.1 पर निर्भर करता है.
वर्शन 2.8.0-alpha03
20 मार्च, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
ViewModel.viewModelScopeअब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इससे आपको अपना डिसपैचर औरSupervisorJob()इंजेक्ट करने की अनुमति मिलती है. इसके अलावा,runTestमें उपलब्धbackgroundScopeका इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin Multiplatform के साथ काम करने की सुविधा
lifecycle-viewmodel आर्टफ़ैक्ट और ViewModel, ViewModelStore, ViewModelStoreOwner, और ViewModelProvider जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं. (b/214568825)
इस बदलाव को लागू करने के लिए, ViewModelProvider पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो पहले java.lang.Class<T> लेता था. अब यह kotlin.reflect.KClass<T> लेता है.
Android पर बाइनरी फ़ाइल के साथ काम करने की सुविधा को बनाए रखा गया है. हालांकि, Android API की तुलना में सामान्य एपीआई में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProviderइंस्टेंस को सीधे तौर पर कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()तरीकों से बनाया जाता है. ViewModelProvider.NewInstanceFactoryऔरViewModelProvider.AndroidViewModelFactoryसिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री,
ViewModelProvider.Factoryसे एक्सटेंड करें औरcreateतरीके का इस्तेमाल करें. यह तरीका,CreationExtrasलेता है याviewModelFactoryKotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री,
- गैर-JVM प्लैटफ़ॉर्म पर कस्टम फ़ैक्ट्री के बिना
ViewModelProviderका इस्तेमाल करने पर,UnsupportedOperationExceptionमिलेगा. JVM प्लैटफ़ॉर्म पर, अगर कस्टम फ़ैक्ट्री नहीं दी जाती है, तो no-args ViewModel कंस्ट्रक्टर का इस्तेमाल करके कंपैटिबिलिटी बनाए रखी जाती है. viewModelScopeउन प्लैटफ़ॉर्म परEmptyCoroutineContextपर फ़ॉलबैक करेगा जहांDispatchers.Mainउपलब्ध नहीं है. उदाहरण के लिए, Linux.
व्यवहार में बदलाव
InitializerViewModelFactory(इसमेंviewModelFactoryबिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentExceptionदिखाएगा. ऐसा तब होगा, जब एक हीclazz: KClass<VM : ViewModel>वालाinitializerपहले ही जोड़ा जा चुका हो. (Ic3a36)
गड़बड़ियां ठीक की गईं
ViewModel.getCloseableअब डुप्लीकेट कुंजियों को मैनेज करता है: अगरkeyमें पहले से ही कोईAutoCloseableसंसाधन जुड़ा हुआ है, तो पुराने संसाधन को तुरंत बदल दिया जाएगा और बंद कर दिया जाएगा. (Ibeb67)- अब
ViewModelकेviewModelScopeको थ्रेड सेफ़ तरीके से ऐक्सेस किया जा सकता है. (If4766, b/322407038)
बाहरी योगदान
LocalLifecycleOwnerको Compose UI से lifecycle-runtime-compose पर ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose UI के बाहर इस्तेमाल किया जा सके. योगदान देने के लिए, Jake Wharton का धन्यवाद. (I6c41b, b/328263448)
वर्शन 2.8.0-alpha02
21 फ़रवरी, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
dropUnlessResumedऔरdropUnlessStartedएपीआई जोड़े गए हैं. इनकी मदद से, उन क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है जोLifecycleOwnerके, दिए गएLifecycle.Stateसे नीचे आने के बाद भी होते हैं. उदाहरण के लिए, इसका इस्तेमाल Navigation Compose के साथ किया जा सकता है, ताकि किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को हैंडल न करना पड़े:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Kotlin कन्वर्ज़न
ViewModelको अब Kotlin में लिखा गया है (I16f26, b/214568825)lifecycle-viewmodel-ktxKotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Id787b, b/274800183)lifecycle-runtime-ktxKotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Ic3686, b/274800183)lifecycle-livedata-core-ktxKotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (I54a3d, b/274800183)
Kotlin Multiplatform के साथ काम करने की सुविधा
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.Event, औरLifecycleRegistryमें मौजूद मुख्य लाइफ़साइकल एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं. (b/317249252)
एपीआई में हुए बदलाव
- अब बिना कुंजी के
LifecycleStartEffectऔरLifecycleResumeEffectको कॉल करने पर गड़बड़ी होती है. यहDisposableEffectएपीआई के लिए इस्तेमाल किए जाने वाले तरीके के मुताबिक है. (Ib0e0c, b/323518079) ViewModelअबCloseableके बजायAutoCloseableका इस्तेमाल करता है. यह बदलाव, पुराने सिस्टम के साथ काम करने वाला है. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)की जगह अबLiveData.toPublisher(lifecycleOwner)का इस्तेमाल किया जाता है. (Iabe29, b/262623005)
बाहरी योगदान
- Jetbrains के इवान मैटकोव का धन्यवाद. उन्होंने Lifecycle को Kotlin Multiplatform पर माइग्रेट करने में हमारी मदद की. (aosp/2926690, I0c5ac, If445d)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
ViewModelमें अबCloseableऑब्जेक्ट जोड़े जा सकते हैं. इनमेंkeyहोता है, ताकि इन्हेंgetCloseable()के ज़रिए वापस पाया जा सके. (I3cf63)
वर्शन 2.7
वर्शन 2.7.0
10 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.7.0 रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.
2.6.0 के बाद हुए ज़रूरी बदलाव
TestLifecycleOwnerमें अब निलंबित करने वाला फ़ंक्शनsetCurrentState()शामिल है. यह फ़ंक्शन यह पक्का करता है कि स्थिति में बदलाव और सभीLifecycleObserverकॉलबैक पूरे हो जाएं. खास तौर पर,currentStateप्रॉपर्टी को सीधे तौर पर सेट करने के बजाय, यहrunBlockingका इस्तेमाल नहीं करता है. इसलिए, इसेrunTestकी ओर से उपलब्ध कराई गई कोरूटीन जैसी कोरूटीन में इस्तेमाल करना सुरक्षित है.mapऔरswitchMapकेLiveDataएक्सटेंशन अबdistinctUntilChangedके जैसा काम करते हैं. अगरLiveDataमेंvalueसेट है, तोmap/switchMapफ़ंक्शन को तुरंत कॉल किया जाएगा, ताकि रिटर्न किए गएLiveDataकेvalueको भरा जा सके. इससे यह पक्का होता है किobserveAsState()के साथ इस्तेमाल करने पर, शुरुआती वैल्यू को पहली कंपोज़िशन के हिस्से के तौर पर सेट किया जाएगा. हालांकि, इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveDataसे अपडेट की गई वैल्यू,LiveDataको ऑब्ज़र्व करना शुरू करने के बाद ही लागू होंगी.- इस रिलीज़ में, उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandleकस्टमParcelableक्लास को ठीक से वापस नहीं लाता था. Android फ़्रेमवर्क की वजह से, टाइप की जानकारी मिट जाती है. इसलिए, कस्टम पार्सलेबल के ऐरे के लिए ज़्यादा काम करना पड़ता है. जैसे, सही टाइप का टाइप किया गया ऐरे मैन्युअल तरीके से बनाना. साथ ही,get,getLiveData, औरgetStateFlowके दस्तावेज़ में अब इस सीमा के बारे में खास तौर पर बताया गया है. LifecycleObserverसे जुड़े proguard keep नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले ProGuard कोड (जैसे, लंबे समय से इस्तेमाल नहीं किए जा रहे@OnLifecycleEventएनोटेशन का इस्तेमाल करना) को, इस्तेमाल के अपने खास मामले के लिए, नियमों को बनाए रखने की सुविधा देनी होगी.
लाइफ़साइकल इवेंट की निगरानी करना
LifecycleEventObserverका इस्तेमाल करने के बजाय, अबLifecycle.asFlow()एक्सटेंशन के तरीके सेLifecycle.EventकेFlowको देखा जा सकता है.- Jetpack Compose का इस्तेमाल करने वाले लोग अब
LifecycleEventEffectका इस्तेमाल करके,Lifecycle.Eventके आधार पर Compose साइड इफ़ेक्ट चला सकते हैं.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose का इस्तेमाल करने वाले लोग,
LifecycleStartEffectऔरLifecycleResumeEffectका इस्तेमाल करके, इवेंट के जोड़ों को मैनेज कर सकते हैं. जैसे, शुरू से बंद और फिर से शुरू से रोके गए इवेंट. यह एपीआई,DisposableEffectमें मौजूद एपीआई की तरह ही काम करता है. यह उन मामलों के लिए सही है जहां स्थिति में बढ़ोतरी होने पर किए गए बदलाव को, स्थिति में गिरावट होने पर वापस लाना होता है.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
ज़्यादा जानकारी के लिए, लाइफ़साइकल इवेंट पर कोड चलाना लेख पढ़ें.
लाइफ़साइकल की स्थिति को मॉनिटर करने की सुविधा
- मौजूदा
Lifecycle.Stateको अबLifecycle.currentStateFlowप्रॉपर्टी के ज़रिए देखा जा सकता है. यह एकStateFlowदिखाता है, जिसमेंvalueमौजूदाLifecycle.Stateहोता है. - Jetpack Compose का इस्तेमाल करने वाले लोग,
Lifecycle.currentStateAsState()एक्सटेंशन का इस्तेमाल करके,Lifecycle.Stateको सीधे तौर पर ComposeStateके तौर पर दिखा सकते हैं. यहlifecycle.currentStateFlow.collectAsState()के बराबर है और इसका छोटा विकल्प है.
ज़्यादा जानकारी के लिए, फ़्लो की मदद से लाइफ़साइकल की स्थिति इकट्ठा करना लेख पढ़ें.
वर्शन 2.7.0-rc02
13 दिसंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02 रिलीज़ हो गया है. वर्शन 2.7.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसी समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandleकस्टमParcelableक्लास को ठीक से रीस्टोर नहीं करता था. Android फ़्रेमवर्क की वजह से, टाइप की जानकारी मिट जाती है. इसलिए, कस्टम पार्सलेबल के ऐरे के लिए ज़्यादा काम करना पड़ता है. जैसे, सही टाइप का टाइप किया गया ऐरे मैन्युअल तरीके से बनाना. साथ ही,get,getLiveData, औरgetStateFlowके दस्तावेज़ में अब इस सीमा के बारे में खास तौर पर बताया गया है. (I0b55a)
वर्शन 2.7.0-rc01
15 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LifecycleStartEffectऔरLifecycleResumeEffectअबLifecycleOwnerमें बदलाव होने पर, इफ़ेक्ट ब्लॉक को सही तरीके से हटाते हैं और फिर से बनाते हैं. (Ia25c6)
वर्शन 2.7.0-beta01
1 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01 को बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.
- बीटा वर्शन में बदलाव किया गया है. इस रिलीज़ वर्शन में कोई बड़ा बदलाव नहीं किया गया है.
वर्शन 2.7.0-alpha03
18 अक्टूबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-testingमें अब एक नया लिंट चेक शामिल है. इससे कोरूटीन के अंदरcurrentStateफ़ील्ड का इस्तेमाल करके,TestLifecycleOwnerकेLifecycle.Stateको सेट करने से बचा जा सकता है. लिंट चेक अबsetCurrentStateको निलंबित करने का सुझाव देता है. इससेLifecycle.Stateको ब्लॉक किए बिना सेट किया जा सकता है. (Icf728, b/297880630)
गड़बड़ियां ठीक की गईं
LiveData.switchMapसे जुड़ी उस समस्या को ठीक किया गया है जिसमें शुरुआती कॉल और उसके बाद के कॉल, दोनों में एक हीLiveDataइंस्टेंस को वापस लाने पर,LiveDataइंस्टेंस को सोर्स के तौर पर जोड़ने से रोका जाता था. (Ibedcba7)
वर्शन 2.7.0-alpha02
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
TestLifecycleOwnerमें अब सस्पेंड करने वाला फ़ंक्शनsetCurrentState()शामिल है. इससे उपयोगकर्ताओं कोrunTestकी ओर से उपलब्ध कराई गई कोरूटीन मेंTestLifecycleOwnerका इस्तेमाल करने का विकल्प मिलता है. (I329de, b/259344129)
एपीआई में हुए बदलाव
lifecycle-livedata-ktxमॉड्यूल की सभी फ़ाइलों को मुख्यlifecycle-livedataमॉड्यूल में ले जाया गया है. (I10c6f, b/274800183)
व्यवहार में बदलाव
LiveData.map()औरLiveData.switchMap()एक्सटेंशन, अबLiveDataके लिएvalueसेट करते हैं. ऐसा तब होता है, जब पिछलेLiveDataके लिए कोई वैल्यू सेट की गई हो. इससे यह पक्का होता है कि Jetpack Compose में LiveData का इस्तेमाल करने पर, शुरुआती कंपोज़िशन में सही स्थिति हो. (I91d2b, b/269479952)- अगर
ViewModelको पहले हीonCleared()पर कॉल मिल चुका है, तोViewModelकाaddCloseable()अबCloseableको तुरंत बंद कर देता है. (I4712e, b/280294730)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.6.2: हमने एक समस्या को ठीक किया है. इस समस्या में, प्रोसेस बंद होने के बादSavedStateHandleको सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था,save()को पैरंटSavedStateRegistryमें स्थिति को सेव किए बिना कॉल किया जाता था, और फिर स्थिति को फिर से रीस्टोर किया जाता था. इससेrememberSaveableऔर Navigation Compose केNavHostके बीच इंटरैक्शन की समस्या ठीक हो जाती है. (aosp/2729289)
वर्शन 2.7.0-alpha01
26 जुलाई, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Lifecycle.Stateको अबLifecycle.currentStateFlowके ज़रिए कंपोज़ किया जा सकता है. इससेStateFlowमिलता है, जहांvalueमौजूदाLifecycle.Stateहोता है. (Ib212d, b/209684871)Lifecycle.Events को अबLifecycle.asFlow().के साथFlowके तौर पर देखा जा सकता है (If2c0f, b/176311030)LifecycleResumeEffectएपीआई कोLifecycle.Event.ON_RESUMEऔरLifecycle.Event.ON_PAUSEइवेंट कॉलबैक, दोनों के आधार पर कंपोज़SideEffects चलाने के लिए जोड़ा गया है. (I60386, b/235529345)LifecycleStartEffectएपीआई कोLifecycle.Event.ON_STARTऔरLifecycle.Event.ON_STOPइवेंट के कॉल बैक के आधार पर, कंपोज़SideEffectचलाने के लिए जोड़ा गया है. (I5a8d1, b/235529345)LifecycleEventEffectके आधार पर ComposeSideEffects को चलाने के लिए, एपीआई जोड़ा गया है.Lifecycle.Event(Ic9794, b/235529345)Lifecycle.collectAsState()एक्सटेंशन को सीधे तौर परLifecycle.Stateको ComposeStateके तौर पर दिखाने के लिए जोड़ा गया है. यहlifecycle.currentStateFlow.collectAsState()के बराबर है और इसका छोटा विकल्प है. (I11015, b/235529345)
गड़बड़ियां ठीक की गईं
- अगर पिछली
LiveDataके लिए कोई वैल्यू सेट की गई है, तो अबLiveData.distinctUntilChanged()एक्सटेंशन, दिखाई गईLiveDataके लिएvalueसेट करता है. इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveDataसे अपडेट की गई वैल्यू, सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()से मिलेLiveDataको ऑब्ज़र्व करना शुरू किया जाएगा. (Ib482f) LifecycleObserverसे जुड़े proguard keep नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले ProGuard कोड को, इस्तेमाल के अपने खास मामले के लिए, अपने कीप नियम देने होंगे. (Ia12fd)
वर्शन 2.6
वर्शन 2.6.2
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.6.2 रिलीज़ हो गया है. वर्शन 2.6.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
SavedStateHandleको सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था,save()को पैरंटSavedStateRegistryमें स्थिति को सेव किए बिना कॉल किया जाता था, और फिर स्थिति को फिर से रीस्टोर किया जाता था. इससेrememberSaveableऔर Navigation Compose केNavHostके बीच इंटरैक्शन की समस्या ठीक हो जाती है. (aosp/2729289)
वर्शन 2.6.1
22 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.1 रिलीज़ हो गया है. वर्शन 2.6.1 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
lifecycle-viewmodel-savedstateअब SavedState1.2.1पर निर्भर करता है. (cd7251)- लाइफ़साइकल अब ProfileInstaller
1.3.0पर निर्भर करता है. (f9d30b)
वर्शन 2.6.0
8 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.0 रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.
2.5.0 के बाद हुए ज़रूरी बदलाव
LiveDataमें अब एक नईisInitializedप्रॉपर्टी शामिल है. इससे पता चलता है किLiveDataपर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value,nullवैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी याnullकी कोई वैल्यू सेट की गई थी.MediatorLiveDataमें अब शुरुआती वैल्यू सेट करने के लिए कंस्ट्रक्टर शामिल है.collectAsStateWithLifecycle()केStateFlowऔरFlowपर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, Compose State के तौर पर इसकी नई वैल्यू दिखाता है.Lifecycle.launchWhenXऔरLifecycle.whenXके तरीकों को बंद कर दिया गया है, क्योंकि पॉज़िंग डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycleका इस्तेमाल करें. एक बार काम को निलंबित करने के बारे में ज़्यादा जानकारी के लिए, कृपया यह जानकारी देखें. इसमें बताया गया है कि यह सुविधा सुरक्षित क्यों नहीं है.- Kotlin कन्वर्ज़न - लाइफ़साइकल की कई क्लास को Kotlin में बदल दिया गया है. बदली गई सभी क्लास, पिछले वर्शन के साथ बाइनरी कंपैटिबिलिटी बनाए रखती हैं. Kotlin में लिखी गई क्लास के लिए, इन क्लास में सोर्स के साथ काम न करने वाले बदलाव किए गए हैं:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
नीचे दी गई टेबल में, लाइफ़साइकल के नए वर्शन के लिए सोर्स कन्वर्ज़न दिए गए हैं.
| लाइफ़साइकल 2.5 | लाइफ़साइकल 2.5 (KTX) | लाइफ़साइकल 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin में बनाए गए
ObserverकेonChangedतरीके में, वैल्यू न होने की स्थिति अब जेनरिक टाइप से मेल खाती है. अगर आपकोObserver.onChanged()को नल वैल्यू स्वीकार करने वाले टाइप के तौर पर इस्तेमाल करना है, तो आपकोObserverको नल वैल्यू स्वीकार करने वाले टाइप के साथ इंस्टैंशिएट करना होगा. - इन क्लास को भी Kotlin में बदल दिया गया है, लेकिन ये सोर्स के साथ काम करती हैं:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcher, औरProcessLifecycleOwner
वर्शन 2.6.0-rc01
22 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर पिछली
LiveDataके लिए कोई वैल्यू सेट की गई है, तो अबLiveData.distinctUntilChanged()एक्सटेंशन, दिखाई गईLiveDataके लिएvalueसेट करता है. इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveDataसे अपडेट की गई वैल्यू, सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()से मिलेLiveDataको ऑब्ज़र्व करना शुरू किया जाएगा. (Ib482f)
वर्शन 2.6.0-beta01
8 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
LifecycleOwnerको अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetLifecycle()फ़ंक्शन को लागू करने के बजाय,lifecycleप्रॉपर्टी को बदलना होगा. (I75b4b, b/240298691)ViewModelStoreOwnerअब Kotlin में उपलब्ध है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetViewModelStore()फ़ंक्शन को लागू करने के बजाय,viewModelStoreप्रॉपर्टी को बदलना होगा. (I86409, b/240298691)LifecycleOwnerपर मौजूद Kotlin एक्सटेंशन,lifecycleScopeफ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktxसेlifecycle-commonआर्टफ़ैक्ट में ले जाया गया है. (I41d78, b/240298691)Lifecycleपर मौजूद Kotlin एक्सटेंशन,coroutineScopeफ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktxसेlifecycle-commonआर्टफ़ैक्ट में ले जाया गया है. (Iabb91, b/240298691)
वर्शन 2.6.0-alpha05
25 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 रिलीज़ हो गया है. वर्शन 2.6.0-alpha05 में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
Transformationsको अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर परTransformations.mapजैसे सिंटैक्स का इस्तेमाल कर रही थीं. Kotlin कोड को अब Kotlin एक्सटेंशन के तरीके वाले सिंटैक्स का इस्तेमाल करना होगा. यह सिंटैक्स, पहले सिर्फ़lifecycle-livedata-ktxका इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय, इन तरीकों के वे वर्शन काम नहीं करेंगे जोandroidx.arch.core.util.Functionतरीके का इस्तेमाल करते हैं. इनकी जगह, उन वर्शन का इस्तेमाल किया जाएगा जो KotlinFunction1का इस्तेमाल करते हैं. इस बदलाव से, बाइनरी कंपैटबिलिटी बनी रहती है. (I8e14f)ViewTreeViewModelStoreOwnerको अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeViewModelStoreOwnerऔरandroidx.lifecycle.findViewTreeViewModelStoreOwnerकेViewपर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट किया जा सके और ढूंढा जा सके. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactoryइंटरफ़ेस को अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछले फ़ंक्शन को लागू करने के बजाय,defaultViewModelProviderFactoryऔरdefaultViewModelCreationExtrasप्रॉपर्टी को बदलना होगा. (Iaed9c, b/240298691)Observerको अब Kotlin में लिखा गया है. इसकेonChanged()तरीके में, अब पैरामीटर के लिएvalueनाम का इस्तेमाल किया जाता है. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcher, औरProcessLifecycleOwnerको अब Kotlin में लिखा गया है (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
वर्शन 2.6.0-alpha04
11 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 रिलीज़ हो गया है. वर्शन 2.6.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
LiveDataमें अब एक नईisInitializedप्रॉपर्टी शामिल है. इससे पता चलता है किLiveDataपर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value,nullवैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी याnullकी कोई वैल्यू सेट की गई थी. (Ibd018)
एपीआई में हुए बदलाव
lifecycle-runtime-composeकेcollectAsStateWithLifecycle()एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)Lifecycle.launchWhenXऔरLifecycle.whenXके तरीकों को बंद कर दिया गया है, क्योंकि पॉज़िंग डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycleका इस्तेमाल करें. (Iafc54, b/248302832)
Kotlin कन्वर्ज़न
ViewTreeLifecycleOwnerको अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeLifecycleOwnerऔरandroidx.lifecycle.findViewTreeLifecycleOwnerकेViewपर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट किया जा सके और ढूंढा जा सके. यहlifecycle-runtime-ktxमें मौजूद पिछले Kotlin एक्सटेंशन की जगह ले लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreamsको अब Kotlin में लिखा गया है.lifecycle-reactivestreams-ktxमें मौजूद Kotlin एक्सटेंशन को अबlifecycle-reactivestreamsमॉड्यूल में ले जाया गया है. साथ ही, ये Kotlin में लिखे गए कोड के लिए प्राइमरी सर्फ़ेस बन गए हैं. अगर आपने पहले से Kotlin एक्सटेंशन के तरीके वाले एपीआई का इस्तेमाल नहीं किया है, तो Kotlin में लिखे गए कोड के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver, औरViewModelStoreको अब Kotlin में लिखा गया है (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
गड़बड़ियां ठीक की गईं
get()के साथ गलत क्लास टाइप का इस्तेमाल करकेget()को कॉल करने पर,SavedStateHandleअब क्रैश नहीं होता.ClassCastException(I6ae7c)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल के अलग-अलग मॉड्यूल के बीच की शर्तों के ठीक से काम न करने की समस्या को ठीक किया गया है. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()से मिलने वाली गड़बड़ियों के मैसेज में अब ज़्यादा मददगार जानकारी शामिल होती है. इससे डेवलपर को उस कॉम्पोनेंट के बारे में पता चलता है जिसकी वजह से गड़बड़ी हुई है. (Idf4b2, b/244910446)
वर्शन 2.6.0-alpha02
7 सितंबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MediatorLiveDataमें अब शुरुआती वैल्यू सेट करने के लिए कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)
गड़बड़ियां ठीक की गईं
Lifecycleआर्टफ़ैक्ट में अब constraints शामिल हैं. इनसे यह पक्का किया जाता है कि एक-दूसरे पर निर्भर लाइफ़साइकल के सभी आर्टफ़ैक्ट, एक ही वर्शन का इस्तेमाल करें. साथ ही, किसी एक आर्टफ़ैक्ट को अपग्रेड करने पर, अन्य डिपेंडेंसी अपने-आप अपग्रेड हो जाती हैं. b/242871265FlowLiveData.asFlow()अब अपनेChannelको लागू करने के बजाय,callbackFlowबनाता है. इससे थ्रेड-सेफ़्टी और कॉन्टेक्स्ट को सुरक्षित रखने में मदद मिलती है. (I4a8b2, b/200596935)FlowLiveDataकाasLiveDataफ़ंक्शन, अब नयाLiveDataऑब्जेक्ट बनाते समयStateFlowकी शुरुआती वैल्यू को बनाए रखेगा. (I3f530, b/157380488)- लाइफ़साइकल
2.5.1से:AndroidViewModelFactoryके कस्टम इंप्लीमेंटेशन, अबLifecycle2.4+ (I5b315, b/238011621) के साथ स्टेटफ़ुल कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)फ़ंक्शन को सही तरीके से कॉल करते हैं
वर्शन 2.6.0-alpha01
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
collectAsStateWithLifecycleकेStateFlowऔरFlowपर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, Compose State के तौर पर इसकी नई वैल्यू दिखाता है. लाइफ़साइकल के कम से कम किसीLifecycle.Stateमें होने पर, फ़्लो को इकट्ठा किया जाता है और नए उत्सर्जन को स्टेट की वैल्यू पर सेट किया जाता है. जब लाइफ़साइकलLifecycle.Stateसे कम हो जाता है, तो फ़्लो कलेक्शन बंद हो जाता है और State की वैल्यू अपडेट नहीं होती है. (I1856e, b/230557927)
वर्शन 2.5
वर्शन 2.5.1
27 जुलाई, 2022
androidx.lifecycle:lifecycle-*:2.5.1 रिलीज़ हो गया है. वर्शन 2.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AndroidViewModelFactoryके कस्टम इंप्लीमेंटेशन, अबLifecycle2.4+ के साथ स्टेटफ़ुलAndroidViewModelFactoryकंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)फ़ंक्शन को सही तरीके से कॉल करते हैं. (I5b315, b/238011621)
वर्शन 2.5.0
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0 रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
SavedStateHandleअबgetStateFlow()एपीआई उपलब्ध कराता है. यहLiveDataके बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlowदिखाता है.ViewModel CreationExtras - कस्टम
ViewModelProvider.Factoryलिखते समय, अबApplicationयाSavedStateHandleका ऐक्सेस पाने के लिए,AndroidViewModelFactoryयाAbstractSavedStateViewModelFactoryको बढ़ाने की ज़रूरत नहीं है. इसके बजाय, इन फ़ील्ड कोcreateके नए ओवरलोड के ज़रिए,CreationExtrasके तौर पर हरViewModelProvider.Factoryसबक्लास को उपलब्ध कराया जाता है:create(Class<T>, CreationExtras). Activity1.5.0और Fragment1.5.0का इस्तेमाल करने पर, ये अतिरिक्त सुविधाएं आपकी Activity या Fragment अपने-आप उपलब्ध कराती हैं.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }lifecycle-viewmodelअबviewModelFactoryKotlin DSL उपलब्ध कराता है. इसकी मदद से, एक या उससे ज़्यादा लैम्डा इनिशियलाइज़र के हिसाब सेViewModelProvider.Factoryतय किया जा सकता है. कस्टम फ़ैक्ट्री के साथ काम करने वाली हरViewModelक्लास के लिए, एक लैम्डा इनिशियलाइज़र का इस्तेमाल किया जाता है. इसके लिए,CreationExtrasको मुख्य डेटा सोर्स के तौर पर इस्तेमाल किया जाता है.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }lifecycle-viewmodel-composeअब एकviewModel()एपीआई उपलब्ध कराता है. यहViewModelइंस्टेंस बनाने के लिए, लैम्डा फ़ैक्ट्री लेता है. इसके लिए, कस्टमViewModelProvider.Factoryबनाने की ज़रूरत नहीं होती.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }SavedStateHandle Compose Saver Integration -
lifecycle-viewmodel-composeआर्टफ़ैक्ट में अबSavedStateHandle.saveableमें नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से,rememberSaveableजैसे व्यवहार को `ViewModel केSavedStateHandleसे बैकअप लिया जा सकता है.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }एक
addCloseable()API और नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इनकी मदद से,ViewModelमें एक या उससे ज़्यादाCloseableऑब्जेक्ट जोड़े जा सकते हैं.ViewModelको क्लियर करने पर ये ऑब्जेक्ट बंद हो जाएंगे. इसके लिए,onCleared()में मैन्युअल तरीके से कोई कार्रवाई करने की ज़रूरत नहीं होगी.उदाहरण के लिए, अगर आपको ऐसा कोरूटीन स्कोप बनाना है जिसे ViewModel में इंजेक्ट किया जा सके, लेकिन टेस्टिंग के ज़रिए कंट्रोल किया जा सके, तो
CoroutineScopeबनाएं. यहCloseableको लागू करता है:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }इसका इस्तेमाल आपके
ViewModelकंस्ट्रक्टर में किया जा सकता है. हालांकि,viewModelScopeकी तरह ही इसकी लाइफ़टाइम भी बनी रहती है:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
व्यवहार में बदलाव
INITIALIZEDसेDESTROYEDमेंLifecycle.Stateको ट्रांसफ़र करने की कोशिश करने पर, अब हमेशाIllegalStateExceptionदिखेगा. भले ही,Lifecycleसे कोई ऑब्ज़र्वर जुड़ा हो या न हो.LifecycleRegistryकी स्थितिDESTROYEDपर पहुंचने पर, उसके सभी ऑब्ज़र्वर हट जाएंगे.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- compileOnly Lifecycle डिपेंडेंसी के पिछले वर्शन को 2.5 और इसके बाद के वर्शन के साथ मिक्स करने पर,
ViewModelProviderअब क्रैश नहीं होगा. (I81a66, b/230454566)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01 रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
MediatorLiveData.addSource()अबnullसोर्स को ऑब्ज़र्वर तक पहुंचाने के बजाय,nullसोर्स पास करने परNullPointerExceptionदिखाता है.(Ibd0fb, b/123085232)
वर्शन 2.5.0-beta01
20 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01 रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle.saveableप्रॉपर्टी डेलिगेट जोड़े गए, ताकि प्रॉपर्टी के नामों को कुंजियों के तौर पर इस्तेमाल करकेSavedStateHandle(I8bb86, b/225014345) में स्थिति को बनाए रखा जा सके
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें एक से ज़्यादा बैक स्टैक का इस्तेमाल करते समय, प्राइमरी बॉटम नेविगेशन टैब के अलावा किसी अन्य टैब में एक
NavHostको दूसरेNavHostमें नेस्ट करने पर,IllegalStateExceptionदिखता था. (I11bd5, b/228865698)
वर्शन 2.5.0-alpha06
6 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 रिलीज़ हो गया है. वर्शन 2.5.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
rememberSaveableके बराबर बनाने के लिए,SavedStateHandle.saveableमें एक्सपेरिमेंट के तौर परMutableStateओवरलोड जोड़ा गया (I38cfe, b/224565154)
एपीआई में हुए बदलाव
CreationExtrasअब सील किए गए के बजाय ऐब्स्ट्रैक्ट है. (Ib8a7a)
गड़बड़ियां ठीक की गईं
SavedStateHandleControllerकी वजह से होने वालीIllegalStateException: Already attached to lifecycleOwnerगड़बड़ी को ठीक किया गया. (I7ea47, b/215406268)
वर्शन 2.5.0-alpha05
23 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 रिलीज़ हो गया है. वर्शन 2.5.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-composeमॉड्यूल अबSavedStateHandleSaverउपलब्ध कराता है. यह एक एक्सपेरिमेंटल एपीआई है. यह पक्का करता है किSavedStateHandleमें मौजूद वैल्यू, उसी सेव किए गए इंस्टेंस की स्थिति के साथ सही तरीके से इंटिग्रेट की गई हों जिसका इस्तेमालrememberSaveableकरता है. (Ia88b7, b/195689777)
एपीआई में हुए बदलाव
- Java में, Lifecycle 2.3 और Lifecycle के नए वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I52c8a, b/219545060)
गड़बड़ियां ठीक की गईं
SavedStateViewFactoryअबCreationExtrasका इस्तेमाल करने की सुविधा देता है. भले ही, इसेSavedStateRegistryOwnerके साथ शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
वर्शन 2.5.0-alpha04
9 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 रिलीज़ हो गया है. वर्शन 2.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandleअबgetStateFlow()एपीआई उपलब्ध कराता है. यहLiveDataके बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlowदिखाता है. (Iad3ab, b/178037961)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
addCloseable()एपीआई और नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इनकी मदद से,ViewModelमें एक या उससे ज़्यादाCloseableऑब्जेक्ट जोड़े जा सकते हैं.ViewModelको हटाने पर, ये ऑब्जेक्ट बंद हो जाएंगे. इसके लिए,onCleared()में कोई भी मैन्युअल कार्रवाई करने की ज़रूरत नहीं होगी. (I55ea0)lifecycle-viewmodelअब एकInitializerViewModelFactoryउपलब्ध कराता है. इसकी मदद से,CreationExtrasको प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके,ViewModelक्लास को हैंडल करने के लिए लैम्डा जोड़ा जा सकता है. (If58fc, b/216687549)lifecycle-viewmodel-composeअबviewModel()एपीआई उपलब्ध कराता है. यह एपीआई,ViewModelइंस्टेंस बनाने के लिए लैंबडा फ़ैक्ट्री लेता है. इसके लिए, कस्टमViewModelProvider.Factoryबनाने की ज़रूरत नहीं होती. (I97fbb, b/216688927)
एपीआई में हुए बदलाव
- अब
lifecycle-viewmodel-composeके ज़रिए,CreationExtrasके साथViewModelबनाया जा सकता है. (I08887, b/216688927)
व्यवहार में बदलाव
Lifecycle.StateकोINITIALIZEDसेDESTROYEDमें ले जाने की कोशिश करने पर, अब हमेशाIllegalStateExceptionदिखेगा. भले ही,Lifecycleसे कोई ऑब्ज़र्वर जुड़ा हो या नहीं. (I7c390, b/177924329)LifecycleRegistryअबDESTROYEDस्थिति में पहुंचने पर, अपने ऑब्ज़र्वर को हटा देगा. (I4f8dd, b/142925860)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandleऔरSavedStateViewModelFactoryको Kotlin में बदल दिया गया है. इससे दोनों क्लास में, जेनेरिक के नल होने की स्थिति बेहतर हुई है. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveDataswitchMapफ़ंक्शन पैरामीटर का आउटपुट अब शून्य हो सकता है. (I40396, b/132923666)LiveData-ktx एक्सटेंशन को अब@CheckResultके साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि इन फ़ंक्शन को कॉल करते समय, नतीजे का इस्तेमाल किया जाए. (Ia0f05, b/207325134)
व्यवहार में बदलाव
SavedStateHandleअब defaultValue को सही तरीके से सेव करता है. ऐसा तब होता है, जब दी गई कुंजी के लिए कोई वैल्यू मौजूद न हो. (I1c6ce, b/178510877)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.4.1से:lifecycle-processको Startup 1.1.1 पर निर्भर रहने के लिए अपडेट किया गया है, ताकि यह पक्का किया जा सके किProcessLifecycleInitializerकोStartupExceptionसे रोकने वाले फ़िक्स डिफ़ॉल्ट रूप से उपलब्ध हों. (Ib01df, b/216490724) - अब कस्टम
AndroidViewModelक्लास में पैरामीटर गलत क्रम में होने पर, गड़बड़ी का बेहतर मैसेज दिखता है. साथ ही,ViewModelबनाने की कोशिश करने पर भी गड़बड़ी का मैसेज दिखता है. (I340f7, b/177667711) - अब
AndroidViewModelFactoryका इस्तेमाल करके,CreationExtrasके ज़रिए व्यू मॉडल बनाया जा सकता है. इसके लिए, ऐप्लिकेशन सेट करने की ज़रूरत नहीं है. (I6ebef, b/217271656)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
ViewModel CreationExtras
इस रिलीज़ के साथ, हम ViewModel को बनाने के तरीके में बदलाव करने की तैयारी कर रहे हैं. ViewModelProvider.Factory की सबक्लास के एक तय सेट के बजाय, हम स्टेटलेस फ़ैक्ट्रियों की दुनिया में जा रहे हैं. ये फ़ैक्ट्रियां, CreationExtras नाम के नए कॉन्सेप्ट पर काम करती हैं. हर सबक्लास में अतिरिक्त फ़ंक्शन जोड़े जाते हैं. जैसे, AndroidViewModelFactory के ज़रिए Application कंस्ट्रक्टर पैरामीटर की अनुमति देना, SavedStateViewModelFactory और AbstractSavedStateViewModelFactory के ज़रिए SavedStateHandle कंस्ट्रक्टर पैरामीटर की अनुमति देना वगैरह. (Ia7343, b/188691010, b/188541057)
इस बदलाव के बाद, ViewModelProvider अब ViewModelProvider.Factory के पिछले create(Class<T>) तरीके का इस्तेमाल करके सीधे कॉल नहीं करेगा. इसके बजाय, यह create के नए ओवरलोड को कॉल करता है: create(Class<T>, CreationExtras). इसका मतलब है कि ViewModelProvider.Factory इंस्टेंस को सीधे तौर पर लागू करने वाले किसी भी व्यक्ति के पास, अब इन सभी नए CreationExtras का ऐक्सेस है:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: यहString,ViewModelProvider.get()को पास किए गए कस्टम पासकोड का ऐक्सेस देता है.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYसेApplicationक्लास का ऐक्सेस मिलता है.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY, उसSavedStateRegistryOwnerका ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY, उसViewModelStoreOwnerका ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.DEFAULT_ARGS_KEY, उन आर्ग्युमेंट केBundleका ऐक्सेस देता है जिनका इस्तेमालSavedStateHandleबनाने के लिए किया जाना चाहिए.
गतिविधि 1.5.0-alpha01, फ़्रैगमेंट 1.5.0-alpha01, और नेविगेशन 2.5.0-alpha01 का इस्तेमाल करते समय, ये एक्स्ट्रा डिफ़ॉल्ट रूप से उपलब्ध होते हैं. अगर उन लाइब्रेरी के पुराने वर्शन का इस्तेमाल किया जाता है, तो आपका CreationExtras खाली होगा. ViewModelProvider.Factory के सभी मौजूदा सबक्लास को फिर से लिखा गया है, ताकि वे लाइब्रेरी के पुराने वर्शन में इस्तेमाल किए गए लेगसी क्रिएशन पाथ और CreationExtras पाथ, दोनों के साथ काम कर सकें. CreationExtras पाथ का इस्तेमाल आने वाले समय में किया जाएगा.
इन CreationExtras की मदद से, एक ऐसा ViewModelProvider.Factory बनाया जा सकता है जो हर ViewModel को सिर्फ़ ज़रूरी जानकारी देता है. इसके लिए, Factory सबक्लास की सख्त हैरारकी पर भरोसा करने की ज़रूरत नहीं होती:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
हम SavedStateHandleSupport से CreationExtras पर createSavedStateHandle() Kotlin एक्सटेंशन फ़ंक्शन का इस्तेमाल करते हैं, ताकि सिर्फ़ उस ViewModel के लिए SavedStateHandle बनाया जा सके जिसे इसकी ज़रूरत है. (Ia6654, b/188541057)
कस्टम CreationExtras, ComponentActivity या Fragment में getDefaultViewModelCreationExtras() को बदलकर दिया जा सकता है. इससे, ये कस्टम ViewModelProvider.Factory के लिए, अपने-आप जुड़ने वाले फ़ॉर्म के तौर पर उपलब्ध हो जाते हैं. इन एक्सट्रा को सीधे तौर पर ViewModelProvider के साथ इस्तेमाल करने पर या by viewModels() और by activityViewModels() Kotlin प्रॉपर्टी एक्सटेंशन का इस्तेमाल करने पर, ये आपके कस्टम फ़ैक्ट्री के लिए अपने-आप उपलब्ध हो जाएंगे. (I79f2b, b/207012584, b/207012585, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandleको दी गई डिफ़ॉल्ट वैल्यू फिर से दिखने लगती थी. भले ही, उसेSavedStateHandleसे हटा दिया गया हो. इस वजह से,SavedStateHandleअब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ नहीं मर्ज करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b)
वर्शन 2.4
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.5.0-alpha01से बैकपोर्ट किया गया: इस समस्या को ठीक किया गया है. इसमेंSavedStateHandleको दी गई डिफ़ॉल्ट वैल्यू, प्रोसेस बंद होने और फिर से शुरू होने के बाद फिर से दिखने लगती थी. भले ही, इसेSavedStateHandleसे हटा दिया गया हो. इस वजह से,SavedStateHandleअब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ नहीं मर्ज करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b) lifecycle-processअब Androidx Startup 1.1.1 पर निर्भर करता है. इसमें एक रिग्रेशन को ठीक किया गया है. इस रिग्रेशन में,ProcessLifecycleInitializerका इस्तेमाल करने परStartupExceptionहोता था. (b/216490724)
वर्शन 2.4.0
27 अक्टूबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0 रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.
2.3.0 के बाद हुए अहम बदलाव
@OnLifecycleEventका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserverयाDefaultLifecycleObserverका इस्तेमाल करना चाहिए.androidx.lifecycle:lifecycle-viewmodel-composeलाइब्रेरी को जोड़ा गया. यहviewModel()कंपोज़ेबल औरLocalViewModelStoreOwnerउपलब्ध कराता है.- सोर्स के साथ काम न करने वाला बदलाव:
ViewModelProviderको Kotlin में फिर से लिखा गया है.ViewModelProvider.Factory.createतरीके में अब नल वैल्यू वाले सामान्य टाइप की अनुमति नहीं है.
- सोर्स के साथ काम न करने वाला बदलाव:
androidx.lifecycle:lifecycle-runtime-ktxमें नए कोरूटीन एपीआई जोड़े गए हैं:Lifecycle.repeatOnLifecycle, एपीआई है. यह Lifecycle के कम से कम किसी खास स्थिति में होने पर, को-रूटीन में कोड के ब्लॉक को एक्ज़ीक्यूट करता है. लाइफ़साइकल के टारगेट स्टेट में आने और उससे बाहर जाने पर, ब्लॉक रद्द हो जाएगा और फिर से लॉन्च हो जाएगा;Flow.flowWithLifecycle, यह एक ऐसा एपीआई है जो लाइफ़साइकल के किसी खास स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.DefaultLifecycleObserverकोlifecycle.lifecycle-common-java8सेlifecycle.lifecycle-commonमें ले जाया गया.lifecycle.lifecycle-common-java8,lifecycle.lifecycle-commonके अलावा कोई अन्य सुविधा नहीं देता है. इसलिए, इस पर निर्भरता कोlifecycle.lifecycle-commonसे बदला जा सकता है.lifecycle-viewmodel-ktxके नॉन-कोरूटीन एपीआई कोlifecycle-viewmodelमॉड्यूल में ले जाया गया है.lifecycle-processअबProcessLifecycleOwnerको शुरू करने के लिए,androidx.startupका इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializerकरता था.अगर आपने
tools:node="remove"का इस्तेमाल किया है, तो प्रोसेस लाइफ़साइकल को शुरू करने के लिएContentProviderका इस्तेमाल किया जा रहा है. ऐसे में, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
वर्शन 2.4.0-rc01
29 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01 को Lifecycle 2.4.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.4.0-beta01
15 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01 रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@OnLifecycleEventका अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserverयाDefaultLifecycleObserverका इस्तेमाल करना चाहिए. (I5a8fa)- DefaultLifecycleObserver को
androidx.lifecycle.lifecycle-common-java8सेandroidx.lifecycle.lifecycle-commonमें ले जाया गया.androidx.lifecycle.lifecycle-common-java8,androidx.lifecycle.lifecycle-commonके अलावा कोई अन्य सुविधा नहीं देता है. इसलिए, इस पर निर्भरता कोandroidx.lifecycle.lifecycle-commonसे बदला जा सकता है. (I021aa) lifecycle-viewmodel-ktxके नॉन-कोरूटीन एपीआई कोlifecycle-viewmodelमॉड्यूल में ले जाया गया है. (I6d5b2)
बाहरी योगदान
वर्शन 2.4.0-alpha03
4 अगस्त, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सोर्स के साथ काम न करने वाला बदलाव: ViewModelProvider को Kotlin में फिर से लागू किया गया है.
ViewModelProvider.Factory.createमेथड में अब नल वैल्यू वाले सामान्य टाइप इस्तेमाल नहीं किए जा सकते. (I9b9f6)
व्यवहार में बदलाव
- अब
Lifecycle.repeatOnLifecycle:blockको बार-बार लागू करने पर, हमेशा क्रम से लागू किया जाता है. (Ibab33)
बाहरी योगदान
repeatOnLifecycleदस्तावेज़ में कोड स्निपेट ठीक करने के लिए, chao2zhang का धन्यवाद. #205.
वर्शन 2.4.0-alpha02
16 जून, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-ktxमें नयाRepeatOnLifecycleWrongUsageलिंट चेक जोड़ा गया है. इससे यह पता चलता है किonStart()याonResume()मेंrepeateOnLifecycleका गलत तरीके से इस्तेमाल कब किया गया है. (706078, b/187887400)
एपीआई में हुए बदलाव
LifecycleOwner.addRepeatingJobएपीआई को हटा दिया गया है. इसकी जगहLifecycle.repeatOnLifecycleका इस्तेमाल किया जा रहा है. यह स्ट्रक्चर्ड कंकरेंसी का पालन करता है और इसके बारे में तर्क देना आसान है. (I4a3a8)ProcessLifecycleInitializerको सार्वजनिक करें, ताकि अन्यandroidx.startup.Initializerइन्हें डिपेंडेंसी के तौर पर इस्तेमाल कर सकें. (I94c31)
गड़बड़ियां ठीक की गईं
- जब फ़ील्ड में मॉडिफ़ायर होते हैं, तब
NullSafeMutableLiveDataलिंट चेक से जुड़ी समस्या को ठीक किया गया है. (#147, b/183696616) - जेनेरिक का इस्तेमाल करते समय,
NullSafeMutableLiveDataलिंट चेक से जुड़ी एक और समस्या ठीक की गई. (#161, b/184830263)
बाहरी योगदान
NullSafeMutableLiveDataलिंट चेक को बेहतर बनाने के लिए, maxsav को धन्यवाद. (#147, b/183696616)NullSafeMutableLiveDataलिंट चेक को बेहतर बनाने के लिए, kozaxinan को धन्यवाद. (#161, b/184830263)
वर्शन 2.4.0-alpha01
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
lifecycle-processअबProcessLifecycleOwnerको शुरू करने के लिए,androidx.startupका इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializerकरता था.अगर आपने
tools:node="remove"का इस्तेमाल किया है, तो प्रोसेस लाइफ़साइकल को शुरू करने के लिएContentProviderका इस्तेमाल किया जा रहा है. ऐसे में, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
एपीआई में हुए बदलाव
Flow.flowWithLifecycleएपीआई जोड़ा गया है. यहFlow.flowWithLifecycleएपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम एक तय स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.Lifecycle.repeatOnLifecycleयहLifecycleOwner.addRepeatinJobAPI के नए वर्शन का विकल्प है. (I0f4cd)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल 2.3.1 से:
NonNullableMutableLiveDataलिंट नियम अब अलग-अलग नल वैल्यू वाले फ़ील्ड वैरिएबल के बीच अंतर कर सकता है. (b/169249668)
लाइफ़साइकल व्यूमॉडल कंपोज़ वर्शन 1.0.0
वर्शन 1.0.0-alpha07
16 जून, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बड़े बदलाव
viewModel()अबViewModelStoreOwnerका इस्तेमाल करता है. यहLocalViewModelStoreOwnerके अलावा, अन्य मालिकों के साथ काम करना आसान बनाता है. उदाहरण के लिए, अब किसी नेविगेशन ग्राफ़ से जुड़े ViewModel को वापस पाने के लिए,viewModel(navBackStackEntry)का इस्तेमाल किया जा सकता है. (I2628d, b/188693123)
वर्शन 1.0.0-alpha06
2 जून, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
इसे Compose के 1.0.0-beta08 वर्शन के साथ काम करने के लिए अपडेट किया गया है.
वर्शन 1.0.0-alpha05
18 मई, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- इसे Compose के
1.0.0-beta07वर्शन के साथ काम करने के लिए अपडेट किया गया है.
गड़बड़ियां ठीक की गईं
- ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 के साथ काम करती हैं (I6f9de, b/184718994)
वर्शन 1.0.0-alpha04
7 अप्रैल, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- इस वर्शन की मदद से,
androidx.hilt:hilt-navigation-composeऔरandroidx.navigation:navigation-compose,androidx.compose.compiler:compiler:1.0.0-beta04औरandroidx.compose.runtime:runtime:1.0.0-beta04पर निर्भरता को सिंक कर सकते हैं. 1.0.0 के लिए, यह ज़रूरी है कि कंपाइलर और रनटाइम एक जैसे हों.
वर्शन 1.0.0-alpha03
10 मार्च, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner.currentअब एक शून्य हो सकने वालाViewModelStoreOwnerदिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि मौजूदा कंपोज़िशन मेंViewModelStoreOwnerउपलब्ध है या नहीं. जिन एपीआई के लिएViewModelStoreOwnerकी ज़रूरत होती है, जैसे किviewModel()औरNavHost, उनमेंViewModelStoreOwnerसेट न होने पर भी अपवाद दिखता है. (Idf39a)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha02
24 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwnerमें अबprovidesफ़ंक्शन उपलब्ध हैं. इनका इस्तेमालCompositionLocalProviderके साथ किया जा सकता है. येasProvidableCompositionLocal()एपीआई की जगह काम करते हैं. (I45d24)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha01
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
viewModel()कंपोज़ेबल औरLocalViewModelStoreOwnerकोandroidx.compose.ui.viewinteropसेandroidx.lifecycle.viewmodel.composeपैकेज में मौजूद इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)
वर्शन 2.3.1
लाइफ़साइकल वर्शन 2.3.1
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.3.1 रिलीज़ हो गया है. वर्शन 2.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveDataलिंट नियम अब अलग-अलग नल वैल्यू वाले फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
वर्शन 2.3.0
वर्शन 2.3.0
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-*:2.3.0 रिलीज़ हो गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.
2.2.0 के बाद के मुख्य बदलाव
SavedStateHandleमें पार्सल न किए जा सकने वाले क्लास के लिए सहायता उपलब्ध है:SavedStateHandleअब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इससे आपको किसी दी गई कुंजी के लिएsetSavedStateProvider()को कॉल करने की सुविधा मिलती है. साथ ही,SavedStateProviderउपलब्ध कराने की सुविधा मिलती है. जबSavedStateHandleसे उसकी स्थिति सेव करने के लिए कहा जाता है, तबSavedStateProviderकोsaveState()पर वापस कॉल किया जाएगा. पार्सल नहीं की जा सकने वाली क्लास सेव करना लेख पढ़ें.- लाइफ़साइकल के हिसाब से व्यवहार लागू करना:
- LifecycleRegistry अब
DESTROYEDको टर्मिनल स्थिति के तौर पर लागू करता है. LifecycleRegistryअब यह पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह हमेशा से ही ऐक्टिविटी, फ़्रैगमेंट वगैरह की लाइफ़साइकल के लिए ज़रूरी होता था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश का पता लगाना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistryऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)का इस्तेमाल करके जांचों से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि जब इसLifecycleRegistryको अलग-अलग थ्रेड से ऐक्सेस किया जाता है, तो सही सिंक्रनाइज़ेशन हो.
- LifecycleRegistry अब
- लाइफ़साइकल की स्थिति और इवेंट हेल्पर:
Lifecycle.EventमेंdownFrom(State),downTo(State),upFrom(State),upTo(State)के स्टैटिक हेल्पर तरीके जोड़े गए हैं. इनकी मदद से,Stateऔर ट्रांज़िशन की दिशा के हिसाब सेEventजनरेट किया जा सकता है.getTargetState()मेथड जोड़ा गया है. यहStateउपलब्ध कराता है, जिसमें लाइफ़साइकलEventके बाद सीधे तौर पर ट्रांज़िशन करेगा. withStateAtLeast: ऐसेLifecycle.withStateAtLeastएपीआई जोड़े गए हैं जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं. साथ ही, स्थिति में बदलाव होने पर, कोड के ऐसे ब्लॉक को सिंक्रोनस तरीके से चलाते हैं जो निलंबित नहीं होता. इसके बाद, नतीजे के साथ फिर से शुरू होते हैं. ये एपीआई, मौजूदाwhen*तरीकों से अलग हैं. ऐसा इसलिए, क्योंकि ये एपीआई सस्पेंड करने वाले कोड को चलाने की अनुमति नहीं देते हैं. साथ ही, ये कस्टम डिस्पैचर का इस्तेमाल नहीं करते हैं. (aosp/1326081)ViewTreeएपीआई: नएViewTreeLifecycleOwner.get(View)औरViewTreeViewModelStoreOwner.get(View)एपीआई की मदद से,Viewइंस्टेंस में मौजूदLifecycleOwnerऔरViewModelStoreOwnerको वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको Activity1.2.0और Fragment1.3.0, और AppCompat 1.3.0-alpha01 या उसके बाद के वर्शन पर अपग्रेड करना होगा.findViewTreeLifecycleOwnerऔरfindViewTreeViewModelStoreOwnerKotlin एक्सटेंशन, क्रमशःlifecycle-runtime-ktxऔरlifecycle-viewmodel-ktxमें उपलब्ध हैं.LiveData.observe()Kotlin एक्सटेंशन का इस्तेमाल बंद कर दिया गया है: लैंबडा सिंटैक्स का इस्तेमाल करने के लिए ज़रूरीLiveData.observe()Kotlin एक्सटेंशन का इस्तेमाल अब बंद कर दिया गया है. ऐसा इसलिए, क्योंकि Kotlin 1.4 का इस्तेमाल करते समय इसकी ज़रूरत नहीं होती.
वर्शन 2.3.0-rc01
16 दिसंबर, 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SavedStateHandleकेkeys()तरीके में अब स्थिति सेव होने से पहले और बाद में एक जैसा डेटा दिखता है. इसमें अबset()औरgetLiveData()के साथ इस्तेमाल की गई कुंजियों के अलावा,setSavedStateProvider()के साथ पहले इस्तेमाल की गई कुंजियां भी शामिल हैं. (aosp/1517919, b/174713653)
बाहरी योगदान
- लाइफ़साइकल के बारे में जानकारी रखने वाली को-रूटीन को निलंबित करने वाले एपीआई, अब
yield()को बेहतर तरीके से हैंडल करते हैं. धन्यवाद, निकलास ऐंसमन गिएर्ट्ज़! (aosp/1430830, b/168777346)
वर्शन 2.3.0-beta01
1 अक्टूबर, 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01 रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लैंबडा सिंटैक्स का इस्तेमाल करने के लिए ज़रूरी
LiveData.observe()Kotlin एक्सटेंशन अब इस्तेमाल नहीं किया जाता, क्योंकि Kotlin 1.4 का इस्तेमाल करते समय इसकी ज़रूरत नहीं होती. (I40d3f)
गड़बड़ियां ठीक की गईं
- Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करें (Id6471, b/165307851, b/165300826)
दस्तावेज़ में बदलाव
liveDataबिल्डर औरasLiveData()दस्तावेज़ों को अपडेट कर दिया गया है. इनमें टाइम आउट की दी गई वैल्यू बदलने के बारे में जानकारी शामिल है. (aosp/1122324)
वर्शन 2.3.0-alpha07
19 अगस्त, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 रिलीज़ हो गया है. वर्शन 2.3.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveDataLint check में क्रैश होने की समस्या को ठीक किया गया है. (aosp/1395367)
वर्शन 2.3.0-alpha06
22 जुलाई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 रिलीज़ हो गया है. वर्शन 2.3.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
Lifecycle.EventमेंdownFrom(State),downTo(State),upFrom(State),upTo(State)के स्टैटिक हेल्पर तरीके जोड़े गए हैं, ताकिStateऔर ट्रांज़िशन की दिशा के हिसाब सेEventजनरेट किया जा सके.getTargetState()मेथड जोड़ा गया है. यहStateउपलब्ध कराता है, जिसमें लाइफ़साइकलEventके बाद सीधे तौर पर ट्रांज़िशन करेगा. (I00887)- लाइफ़साइकल की स्थिति का इंतज़ार करने वाले
Lifecycle.withStateAtLeastएपीआई जोड़े गए हैं. ये एपीआई, स्थिति में बदलाव होने पर, कोड के ऐसे ब्लॉक को सिंक्रोनस तरीके से चलाते हैं जो सस्पेंड नहीं होता. इसके बाद, नतीजे के साथ फिर से शुरू होते हैं. ये एपीआई, मौजूदाwhen*तरीकों से अलग हैं. ऐसा इसलिए, क्योंकि ये एपीआई सस्पेंड करने वाले कोड को चलाने की अनुमति नहीं देते हैं. साथ ही, ये कस्टम डिस्पैचर का इस्तेमाल नहीं करते हैं. (aosp/1326081)
व्यवहार में बदलाव
- LifecycleRegistry अब
DESTROYEDको टर्मिनल स्थिति के तौर पर लागू करता है. (I00887) LifecycleRegistryअब यह पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह हमेशा से ही ऐक्टिविटी, फ़्रैगमेंट वगैरह की लाइफ़साइकल के लिए ज़रूरी होता था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश का पता लगाना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistryऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)का इस्तेमाल करके जांचों से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड से इसLifecycleRegistryको ऐक्सेस करते समय, सही सिंक्रनाइज़ेशन हो (Ie7280, b/137392809)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveDataमें क्रैश होने की समस्या को ठीक किया गया है. (b/159987480)lifecycle-livedata-core-ktxके साथ बंडल किए गए Lint चेक के लिए,ObsoleteLintCustomCheckको ठीक किया गया. खास तौर पर,NullSafeMutableLiveDataके लिए. (b/158699265)
वर्शन 2.3.0-alpha05
24 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LiveDataअब रीएंट्रेंट मामलों को बेहतर तरीके से हैंडल करता है. इससेonActive()याonInactive()को डुप्लीकेट कॉल करने से बचा जा सकता है. (b/157840298)- उस समस्या को ठीक किया गया है जिसमें Android Studio 4.1 Canary 6 या इसके बाद के वर्शन का इस्तेमाल करने पर, Lint की जांचें नहीं चलती थीं. (aosp/1331903)
वर्शन 2.3.0-alpha04
10 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveDataLint check में क्रैश होने की समस्या ठीक की गई. (b/157294666)NonNullableMutableLiveDataलिंट चेक की सुविधा अब उन मामलों को भी कवर करती है जहांMutableLiveDataपरnullवैल्यू सेट की गई थी. साथ ही, इसमें नॉन-नल टाइप पैरामीटर भी शामिल है. (b/156002218)
वर्शन 2.3.0-alpha03
20 मई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 रिलीज़ हो गए हैं. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
SavedStateHandleअब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इसके लिए, आपको किसी दी गई कुंजी के लिएsetSavedStateProvider()को कॉल करने की अनुमति मिलती है. साथ ही,SavedStateProviderउपलब्ध कराने की अनुमति मिलती है, जिसेSavedStateHandleसे उसकी स्थिति को सेव करने के लिए कहा जाने पर,saveState()पर कॉलबैक मिलेगा. (b/155106862)- नए
ViewTreeViewModelStoreOwner.get(View)एपीआई की मदद से,Viewइंस्टेंस के लिएViewModelStoreOwnerको वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको Activity1.2.0-alpha05, Fragment1.3.0-alpha05, और AppCompat1.3.0-alpha01पर अपग्रेड करना होगा.lifecycle-viewmodel-ktxमेंfindViewModelStoreOwner()Kotlin एक्सटेंशन जोड़ा गया है. (aosp/1295522)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
lifecycle-livedata-core-ktxआर्टफ़ैक्ट के साथ लाइफ़साइकल2.3.0-alpha01में रिलीज़ किए गएMutableLiveDataलिंट चेक पब्लिश नहीं हो पाते थे. (b/155323109)
वर्शन 2.3.0-alpha02
29 अप्रैल, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateViewModelFactoryअब आपको अपने कंस्ट्रक्टर को शून्यApplicationपास करने की अनुमति देता है. इससे उन मामलों में बेहतर तरीके से मदद मिलती है जहांApplicationतुरंत उपलब्ध नहीं होता है औरAndroidViewModelके लिए सहायता की ज़रूरत नहीं होती है. (aosp/1285740)
गड़बड़ियां ठीक की गईं
- एपीआई 28 और उससे पहले के वर्शन वाले डिवाइसों पर क्लास की पुष्टि न होने की समस्या को ठीक करके, कोल्ड स्टार्ट की परफ़ॉर्मेंस को बेहतर बनाया गया है. (aosp/1282118)
वर्शन 2.3.0-alpha01
4 मार्च, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 रिलीज़ हो गया है. वर्शन 2.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नए
ViewTreeLifecycleOwner.get(View)एपीआई की मदद से,Viewइंस्टेंस के लिएLifecycleOwnerको वापस पाया जा सकता है. इस सुविधा का सही तरीके से इस्तेमाल करने के लिए, आपको Activity1.2.0-alpha01और Fragment1.3.0-alpha01पर अपग्रेड करना होगा.findViewTreeLifecycleOwnerKotlin एक्सटेंशन,lifecycle-runtime-ktxमें उपलब्ध है. (aosp/1182361, aosp/1182956) - एक नया Lint चेक जोड़ा गया है. यह आपको तब चेतावनी देता है, जब Kotlin में नॉन-नल के तौर पर तय किए गए
MutableLiveDataपरnullवैल्यू सेट की जाती है. यह सुविधा,livedata-core-ktxयाlivedata-ktxआर्टफ़ैक्ट का इस्तेमाल करते समय उपलब्ध होती है. (aosp/1154723, aosp/1159092) lifecycle-runtime-testingका नया आर्टफ़ैक्ट उपलब्ध है. यहTestLifecycleOwnerउपलब्ध कराता है, जोLifecycleOwnerलागू करता है. साथ ही, थ्रेड सेफ़ म्यूटेबलLifecycleउपलब्ध कराता है. (aosp/1242438)
गड़बड़ियां ठीक की गईं
lifecycle-runtimeआर्टफ़ैक्ट का पैकेज नाम अब यूनीक है. (aosp/1187196)
वर्शन 2.2.0
ViewModel-Savedstate वर्शन 2.2.0
5 फ़रवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
Lifecycle ViewModel SavedState अब अन्य Lifecycle आर्टफ़ैक्ट के साथ एक ही वर्शन शेयर करता है. 2.2.0 का व्यवहार, 1.0.0 के व्यवहार जैसा ही होता है.
वर्शन 2.2.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-*:2.2.0 रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
2.1.0 के बाद हुए अहम बदलाव
- लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया
lifecycle-runtime-ktxआर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए,lifecycle-livedata-ktxको भी बढ़ाया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें. ViewModelProviders.of()के इस्तेमाल पर रोक लगा दी गई है:ViewModelProviders.of()के इस्तेमाल पर रोक लगा दी गई है. Fragment1.2.0का इस्तेमाल करते समय, नईViewModelProvider(ViewModelStoreOwner)कंस्ट्रक्टर कोFragmentयाFragmentActivityपास करके, वही फ़ंक्शनैलिटी हासिल की जा सकती है.lifecycle-extensionsआर्टफ़ैक्ट का बंद होना:ViewModelProviders.of()के ऊपर बताए गए बंद होने के साथ ही, इस रिलीज़ मेंlifecycle-extensionsमें मौजूद आखिरी एपीआई के बंद होने की जानकारी दी गई है. अब इस आर्टफ़ैक्ट को पूरी तरह से बंद माना जाना चाहिए. हमारा सुझाव है कि आपlifecycle-extensionsके बजाय, अपनी ज़रूरत के हिसाब से लाइफ़साइकल आर्टफ़ैक्ट (जैसे,LifecycleServiceका इस्तेमाल करने परlifecycle-serviceऔरProcessLifecycleOwnerका इस्तेमाल करने परlifecycle-process) का इस्तेमाल करें. ऐसा इसलिए, क्योंकि आने वाले समय मेंlifecycle-extensionsका2.3.0वर्शन रिलीज़ नहीं किया जाएगा.- Gradle Incremental Annotation Processor: Lifecycle का एनोटेशन प्रोसेसर, डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है.
अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग लैंग्वेज में लिखा गया है, तो
DefautLifecycleObserverका इस्तेमाल किया जा सकता है. वहीं, अगर इसे Java 7 प्रोग्रामिंग लैंग्वेज में लिखा गया है, तोLifecycleEventObserverका इस्तेमाल किया जा सकता है.
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 रिलीज़ हो गया है. वर्शन 2.2.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
ViewModelकोViewModelStoreमें सेव करने और बाद में डिफ़ॉल्ट फ़ैक्ट्री के साथ क्वेरी करने पर होने वाली गड़बड़ी को ठीक किया गया.Dispatchers.Main.immediateके इस्तेमाल से जुड़ी समस्या को ठीक किया गया है. साथ ही,launchWhenCreatedऔर इसी तरह के अन्य तरीकों को लाइफ़साइकल के इवेंट के दौरान सिंक्रोनस तरीके से कॉल किया जा सकता है. (aosp/1156203)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, एंडर्स जर्लबर्ग को धन्यवाद! (aosp/1156203)
- इनलाइन एक्ज़ीक्यूशन को लागू करने की समीक्षा करने के लिए, Jetbrains के Vsevolod Tolstopyatov को धन्यवाद.
डिपेंडेंसी में बदलाव
- लाइफ़साइकल एक्सटेंशन अब फ़्रैगमेंट
1.2.0-rc03पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 रिलीज़ हो गया है. वर्शन 2.2.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइब्रेरी के ProGuard सेटअप में मौजूद एक बग को ठीक किया गया है. इससे एपीआई 28 या इसके बाद के वर्शन वाले डिवाइसों पर असर पड़ता था. ऐसा तब होता था, जब टारगेट एपीआई 29 से पहले का होता था. (b/142778206)
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 रिलीज़ हो गया है. वर्शन 2.2.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
launchWhenCreatedऔर इससे जुड़े तरीकों को, लाइफ़साइकल के तरीके से एक फ़्रेम बाद में चलाने की समस्या को ठीक किया गया है. ऐसा इसलिए होता था, क्योंकिDispatchers.Main.immediateके बजायDispatchers.Mainका इस्तेमाल किया जाता था. (aosp/1145596)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1145596)
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 रिलीज़ हो गया है. वर्शन 2.2.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android 10 डिवाइसों पर,
ProcessLifecycleOwnerके क्रम में और ऐक्टिविटी केLifecycleOwnerको शुरू और फिर से शुरू करने में, Lifecycle 2.2.0-alpha05 में हुई गड़बड़ी को ठीक किया गया है. (aosp/1128132) - लाइफ़साइकल
2.2.0-alpha05में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से,lifecycle-processके2.0.0या2.1.0वर्शन का इस्तेमाल करते समयNullPointerExceptionकी समस्या होती थी. (b/141536990)
वर्शन 2.2.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 रिलीज़ हो गया है. वर्शन 2.2.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोरूटीन लाइवडेटा बिल्डर में रेस कंडीशन की समस्या ठीक की गई. b/140249349
वर्शन 2.2.0-alpha04
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScope, औरliveDataके लिए, अबDispatchers.Mainके बजायDispatchers.Main.immediateका इस्तेमाल किया जाता है. (b/139740492)
बाहरी योगदान
Dispatchers.Main.immediateपर माइग्रेट करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1106073)
वर्शन 2.2.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
ViewModelStoreOwnerको लागू करने वाले लोग या कंपनियां, अबHasDefaultViewModelProviderFactoryको लागू कर सकती हैं. इससे उन्हें डिफ़ॉल्टViewModelProvider.Factoryउपलब्ध कराने में मदद मिलेगी. यह ऐक्टिविटी1.1.0-alpha02, फ़्रैगमेंट1.2.0-alpha02, और नेविगेशन2.2.0-alpha01के लिए किया गया है. (aosp/1092370, b/135716331)
एपीआई में हुए बदलाव
ViewModelProviders.of()का अब इस्तेमाल नहीं किया जा सकता. इसी तरह की सुविधा पाने के लिए, नएViewModelProvider(ViewModelStoreOwner)कंस्ट्रक्टर कोFragmentयाFragmentActivityपास किया जा सकता है. (aosp/1009889)
वर्शन 2.2.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
LiveDataScope.initialValueकोLiveDataScope.latestValueसे बदल दिया गया है. यहliveDataब्लॉक की मौजूदा वैल्यू को ट्रैक करेगा.liveDataबिल्डर में एक नया ओवरलोड जोड़ा गया है. यहtimeoutपैरामीटर कोDurationटाइप के तौर पर स्वीकार करता है
वर्शन 2.2.0-alpha01
7 मई, 2019
androidx.lifecycle:*:2.2.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं. इनमें Lifecycle और LiveData के लिए Kotlin coroutines का सपोर्ट शामिल है. इनके बारे में ज़्यादा जानकारी वाले दस्तावेज़ यहां देखे जा सकते हैं.
ViewModel-SavedState वर्शन 1.0.0
वर्शन 1.0.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन में मौजूद मुख्य सुविधाएं
- नई SavedStateHandle क्लास जोड़ी गई. इससे आपकी
ViewModelक्लास, सेव किए गए स्टेटस को ऐक्सेस कर सकती हैं और उसमें योगदान दे सकती हैं. इस ऑब्जेक्ट कोViewModelक्लास के कंस्ट्रक्टर में पाया जा सकता है. साथ ही, Fragments और AppCompatActivity की ओर से डिफ़ॉल्ट रूप से उपलब्ध कराई गई फ़ैक्ट्रियां,SavedStateHandleको अपने-आप इंजेक्ट कर देंगी. - AbstractSavedStateViewModelFactory को जोड़ा गया. इसकी मदद से, अपने
ViewModelके लिए कस्टम फ़ैक्ट्रियां बनाई जा सकती हैं. साथ ही, उन्हेंSavedStateHandleका ऐक्सेस दिया जा सकता है.
ViewModel-Savedstate वर्शन 1.0.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 रिलीज़ हो गया है. वर्शन 1.0.0-rc03 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel SavedState अब Lifecycle
2.2.0-rc03पर निर्भर करता है.
Viewmodel-Savedstate वर्शन 1.0.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- अब यह लाइफ़साइकल
2.2.0-rc02पर निर्भर करता है.
ViewModel-SavedState वर्शन 1.0.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 को 1.0.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
ViewModel-Savedstate वर्शन 1.0.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से
Activity.onActivityResult()में पहली बार SavedState ViewModel को ऐक्सेस करने पर,IllegalStateExceptionमिलता था. (b/139093676) AbstractSavedStateViewModelFactoryका इस्तेमाल करते समय,IllegalStateExceptionसे जुड़ी समस्या को ठीक किया गया है. (b/141225984)
ViewModel-SavedState वर्शन 1.0.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateViewModelFactoryअबAbstractSavedStateViewModelFactoryको एक्सटेंड नहीं करता है. साथ ही,SavedStateHandleको सिर्फ़ उन ViewModels के लिए बनाया जाता है जिन्होंने इसके लिए अनुरोध किया है (aosp/1113593)
ViewModel-SavedState वर्शन 1.0.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नुकसान पहुंचा सकने वाले बदलाव
lifecycle-viewmodel-savedstateअबfragmentपर निर्भर नहीं है. साथ ही, इससे जुड़ेSavedStateViewModelFactory(Fragment)औरSavedStateViewModelFactory(FragmentActivity)कंस्ट्रक्टर हटा दिए गए हैं. इसके बजाय, अबSavedStateViewModelFactory, ऐक्टिविटी1.1.0-alpha02, फ़्रैगमेंट1.2.0-alpha02, और नेविगेशन2.2.0-alpha01के लिए डिफ़ॉल्ट फ़ैक्ट्री है. (b/135716331)
ViewModel-SavedState वर्शन 1.0.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
SavedStateHandle.getLiveData()ओवरलोड जोड़ा गया है, जो डिफ़ॉल्ट वैल्यू स्वीकार करता है.
एपीआई में हुए बदलाव
SavedStateVMFactoryका नाम बदलकरSavedStateViewModelFactoryकर दिया गया है.AbstractSavedStateVMFactoryका नाम बदलकरAbstractSavedStateViewModelFactoryकर दिया गया है.
ViewModel-Savedstate वर्शन 1.0.0-alpha01
13 मार्च, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 रिलीज़ हो गया है. इस शुरुआती रिलीज़ के लिए, पूरा कमिट लॉग यहां देखा जा सकता है.
नई सुविधाएं
- अब
ViewModels, savedstate में योगदान कर सकता है. इसके लिए, आपको हाल ही में लॉन्च की गई viewmodel की फ़ैक्ट्रीSavedStateVMFactoryका इस्तेमाल करना होगा. साथ ही, आपके ViewModel में एक कंस्ट्रक्टर होना चाहिए, जोSavedStateHandleobject को पैरामीटर के तौर पर स्वीकार करता हो.
वर्शन 2.1.0
2.0.0 के बाद हुए अहम बदलाव
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserverजोड़ा गया. यह छिपी हुईGenericLifecycleObserverक्लास के बजाय एक सार्वजनिक एपीआई है. LiveData.observeऔरTransformations.*तरीकों के लिए, ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChangedको जोड़ा गया है. यह एक नया LiveData ऑब्जेक्ट बनाता है, जो तब तक कोई वैल्यू नहीं भेजता, जब तक सोर्सLiveDataकी वैल्यू में बदलाव नहीं हो जाता.- एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScopeजोड़कर, ViewModels में कोरूटीन की सुविधा जोड़ी गई.
वर्शन 2.1.0
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.1.0 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
वर्शन 2.1.0-rc01
2 जुलाई, 2019
androidx.lifecycle:*:2.1.0-rc01 को androidx.lifecycle:*:2.1.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
वर्शन 2.1.0-beta01
7 मई, 2019
androidx.lifecycle:*:2.1.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- लाइफ़साइकल को बीटा वर्शन में अपग्रेड किया गया है: पिछले ऐल्फ़ा वर्शन में पेश किए गए एपीआई, जैसे कि
liveDataट्रांसफ़ॉर्मेशन और ऑब्ज़र्वेशन के लिए एक्सटेंशन फ़ंक्शन,ViewModelप्रॉपर्टी डेलिगेशन और अन्य के साथ इनिशियलाइज़ेशन को स्थिर कर दिया गया है और इनमें कोई बदलाव नहीं किया जाएगा.
वर्शन 2.1.0-alpha04
3 अप्रैल, 2019
androidx.lifecycle:*:2.1.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
- बदलाव:
by viewModels()औरby activityViewModels()के पीछे काम करने वाले एपीआई को बदल दिया गया है. अब यह सिर्फ़ViewModelStoreOwnerके बजाय सीधे तौर परViewModelStoreके साथ काम करेगा. (aosp/932932)
वर्शन 2.1.0-alpha03
13 मार्च, 2019
androidx.lifecycle:*:2.1.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल सभी बदलाव की पूरी सूची यहां देखी जा सकती है.
एपीआई में हुए बदलाव
ViewModelProvider.KeyedFactoryको हटा दिया गया है.ViewModelProvider.Factoryके अलावा दूसरा इंटरफ़ेस, Kotlinby viewmodels {}में प्रॉपर्टी डेलिगेशन की तरह नई सुविधाओं के साथ अच्छी तरह से कंपोज़ नहीं हुआ. (aosp/914133)
वर्शन 2.1.0-alpha02
30 जनवरी, 2019
androidx.lifecycle 2.1.0-alpha02 रिलीज़ हो गया है.
एपीआई में हुए बदलाव
LifecycleRegistryमें अबsetCurrentState()तरीका शामिल है. यह तरीका, अब इस्तेमाल नहीं किए जा सकने वालेsetState()तरीके की जगह लेता है. (aosp/880715)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
ViewModelStoreको मिटाने पर मॉकViewModelइंस्टेंस क्रैश हो जाते थे. b/122273087
वर्शन 2.1.0-alpha01
17 दिसंबर, 2018
androidx.lifecycle 2.1.0-alpha01 रिलीज़ हो गया है.
नई सुविधाएं
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserverजोड़ा गया. यह छिपी हुईGenericLifecycleObserverक्लास के बजाय एक सार्वजनिक एपीआई है. LiveData.observeऔरTransformations.*तरीकों के लिए, ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChangedतरीका जोड़ा गया. यह एक नयाLiveDataऑब्जेक्ट बनाता है. यह तब तक कोई वैल्यू नहीं भेजता, जब तक सोर्स LiveData वैल्यू में बदलाव नहीं किया जाता.- ViewModels में कोरूटीन की सुविधा: एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScopeजोड़ी गई. ViewModelProvider.KeyedFactoryको जोड़ा गया. यह ViewModels के लिए एक फ़ैक्ट्री है, जोcreateतरीके मेंkeyऔरClassको स्वीकार करती है.
वर्शन 2.0.0
वर्शन 2.0.0
21 सितंबर, 2018
ViewModel में 2.0.0-rc01 से एक बग ठीक करने के साथ, लाइफ़साइकल 2.0.0 रिलीज़ किया गया है.
गड़बड़ियां ठीक की गईं
- ViewModel के proGuard नियम से जुड़ी समस्या ठीक की गई. इस नियम की वजह से कंस्ट्रक्टर गलत तरीके से हटा दिए जाते थे b/112230489
वर्शन 2.0.0-beta01
2 जुलाई, 2018
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल ऑब्ज़र्वर के लिए, ProGuard का नियम ठीक किया गया है. इससे सिर्फ़ लागू करने की प्रोसेस को बनाए रखा जा सकेगा, न कि सबइंटरफ़ेस को b/71389427
- ViewModel के लिए ProGuard के नियमों को ठीक किया गया है, ताकि अस्पष्ट बनाने और कम करने की अनुमति दी जा सके
AndroidX से पहले के वर्शन
Lifecycle के AndroidX से पहले के वर्शन के लिए, ये डिपेंडेंसी शामिल करें:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
वर्शन 1.1.1
21 मार्च, 2018
सिर्फ़ एक छोटा बदलाव किया गया है: android.arch.core.util.Function को arch:runtime से arch:common में ले जाया गया है. इससे, इसे रनटाइम डिपेंडेंसी के बिना इस्तेमाल किया जा सकता है. उदाहरण के लिए, नीचे दिए गए paging:common में.
lifecycle:common, lifecycle:runtime पर निर्भर करता है. इसलिए, इस बदलाव का असर सीधे तौर पर lifecycle:runtime पर नहीं पड़ता. इसका असर सिर्फ़ उन मॉड्यूल पर पड़ता है जो सीधे तौर पर lifecycle:common पर निर्भर करते हैं. जैसे, Paging.
वर्शन 1.1.0
22 जनवरी, 2018
पैकेजिंग में बदलाव
अब नई और छोटी डिपेंडेंसी उपलब्ध हैं:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
एपीआई में हुए बदलाव
- अब इस्तेमाल नहीं किए जाने वाले
LifecycleActivityऔरLifecycleFragmentको हटा दिया गया है. कृपयाFragmentActivity,AppCompatActivityया सहायताFragmentका इस्तेमाल करें. @NonNullएनोटेशन कोViewModelProvidersऔरViewModelStoresमें जोड़ा गया हैViewModelProvidersकंस्ट्रक्टर अब काम नहीं करता - कृपया इसके स्टैटिक तरीकों का सीधे तौर पर इस्तेमाल करेंViewModelProviders.DefaultFactoryके इस्तेमाल पर रोक लगा दी गई है - कृपयाViewModelProvider.AndroidViewModelFactoryका इस्तेमाल करें- स्टैटिक
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)मेथड को जोड़ा गया है, ताकिViewModelऔरAndroidViewModelइंस्टेंस बनाने के लिए, स्टैटिकFactoryको वापस पाया जा सके.