लाइफ़साइकल
इस टेबल में, androidx.lifecycle ग्रुप में मौजूद सभी आर्टफ़ैक्ट की सूची दी गई है.
| सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| lifecycle-* | 2.11.0 | - | - | 2.12.0-alpha04 |
| lifecycle-viewmodel-navigation3 | 2.11.0 | - | - | 2.12.0-alpha04 |
डिपेंडेंसी का एलान करना
Lifecycle पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.11.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.12.0-alpha04" // 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.11.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.12.0-alpha04") // 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.11.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.11.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.12
वर्शन 2.12.0-alpha04
23 सितंबर, 2026
androidx.lifecycle:lifecycle-*:2.12.0-alpha04 रिलीज़ हो गया है. वर्शन 2.12.0-alpha04 में ये बदलाव शामिल हैं.
वर्शन 2.12.0-alpha03
09 सितंबर, 2026
androidx.lifecycle:lifecycle-*:2.12.0-alpha03 रिलीज़ हो गया है. वर्शन 2.12.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
compileSdkके लिए, Compose लाइब्रेरी को 37.1 पर अपडेट किया गया है. इसके लिए, Compose का इस्तेमाल करने वाले सभी ऐप्लिकेशन और लाइब्रेरी के लिए,compileSdkको ट्रांज़िटिव तरीके से अपडेट करना होगा. (I05b0f)
वर्शन 2.12.0-alpha02
26 अगस्त, 2026
androidx.lifecycle:lifecycle-*:2.12.0-alpha02 रिलीज़ हो गया है. वर्शन 2.12.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AutoRecreatedऔरrunOnNextRecreationअब काम नहीं करते. इनकी जगहSavedStateProviderऔरSavedStateRestorerका इस्तेमाल किया जाता है. (Iadc00)
वर्शन 2.12.0-alpha01
12 अगस्त, 2026
androidx.lifecycle:lifecycle-*:2.12.0-alpha01 रिलीज़ हो गया है. वर्शन 2.12.0-alpha01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
lifecycle-compilerएनोटेशन प्रोसेसर आर्टफ़ैक्ट को बंद कर दिया गया है. एनोटेशन प्रोसेसर का इस्तेमाल करने के बजाय, कृपयाDefaultLifecycleObserverयाLifecycleEventObserverपर माइग्रेट करें. (Ibf571, b/541926513)SavedStateViewModelFactoryऔरAbstractSavedStateViewModelFactoryअब तुरंत फ़ेल हो जाते हैं. ऐसा तब होता है, जब दिए गएSavedStateRegistryOwnerमेंViewModelStoreOwnerलागू नहीं होता. इससे कॉम्पोनेंट को फिर से बनाते समय, क्रैश होने में देरी नहीं होती. (Icf317)LifecycleRegistryइवेंट डिसपैच में सिस्टम ट्रेसिंग जोड़ें. (Ie1f92, b/112161409)
वर्शन 2.11
वर्शन 2.11.0
17 जून, 2026
androidx.lifecycle:lifecycle-*:2.11.0 रिलीज़ हो गया है. वर्शन 2.11.0 में ये बदलाव शामिल हैं.
2.10.0 के बाद हुए अहम बदलाव:
Compose में स्कोप किए गए ViewModels - ViewModels को खास यूज़र इंटरफ़ेस (जैसे, Pager पेज) से जोड़ने के लिए, ViewModelStoreProvider, rememberViewModelStoreProvider, और rememberViewModelStoreOwner को पेश किया गया है. ये कॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. साथ ही, जब कंपोज़ेबल को हाइरार्की से हटा दिया जाता है, तब ये अपने-आप मिट जाते हैं.
केएमपी के साथ काम करता है - ViewModel-Compose और ViewModel-Navigation3 अब Kotlin Multiplatform के सभी टारगेट के साथ काम करते हैं.
Navigation3 इंटिग्रेशन - ViewModelStoreNavEntryDecorator अब नेस्ट किए गए ViewModels में CreationExtras और फ़ैक्ट्रियों को ट्रांसफ़र करने के लिए, ViewModelStoreOwner को स्वीकार करता है. एक से ज़्यादा बैक स्टैक को सपोर्ट करने के लिए, नए rememberViewModelStoreNavEntryDecorator ओवरलोड का इस्तेमाल करके भी प्रोवाइडर को ऊपर ले जाया जा सकता है. removeViewModelStoreOnPop का अब इस्तेमाल नहीं किया जा सकता.
लाइफ़साइकल यूटिलिटी - इसमें ViewModelStoreOwner के लिए, रीफ़ाइड ViewModelProvider.get<VM>(key) एक्सटेंशन, लैम्ब्डा पर आधारित Lifecycle.addObserver, और डिफ़ॉल्ट फ़ैक्ट्री एक्सटेंशन जोड़े गए हैं. ViewModel.onCleared को अब @EmptySuper के साथ एनोटेट किया गया है.
अन्य बदलाव - रिफ़्लेक्शन फ़ॉलबैक हटाने के लिए, अब LocalLifecycleOwner के लिए Compose UI 1.7.0+ का इस्तेमाल करना ज़रूरी है. Compose compileSdk को अपडेट करने के लिए, AGP का कम से कम वर्शन 9.2.0 होना ज़रूरी है.
वर्शन 2.11.0-rc01
03 जून, 2026
androidx.lifecycle:lifecycle-*:2.11.0-rc01 रिलीज़ हो गया है. वर्शन 2.11.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.11.0-beta02
19 मई, 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta02 रिलीज़ हो गया है. वर्शन 2.11.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक ऐसा
rememberViewModelStoreNavEntryDecoratorओवरलोड जोड़ें जोViewModelStoreProviderको स्वीकार करता हो. इससे डेवलपर, डेकोरेटर के कंपोज़िशन स्कोप से ऊपर प्रोवाइडर को होस्ट कर सकते हैं. इससे ऐसे इस्तेमाल के उदाहरणों को लागू किया जा सकता है जहां एक ही एंट्री दोनों में मौजूद है, लेकिन उसके लिए अलग-अलग स्टेट की ज़रूरत होती है. जैसे, एक से ज़्यादा बैक स्टैक को सपोर्ट करना. (Ibbbfe, b/503420425) - जब किसी भाई-बहन की तरह काम करने वाली कंपनी को कंपोज़िशन से हटा दिया जाता है, तो शेयर किए गए
ViewModelsको समय से पहले क्लियर होने से रोकें. (Ib321a)
गड़बड़ियां ठीक की गईं
LocalLifecycleOwnerका इस्तेमाल करने के लिए, Compose UI 1.7.0 या इसके बाद का वर्शन ज़रूरी है. इससे इंटरनल रिफ़्लेक्शन फ़ॉलबैक हट जाते हैं. इससे परफ़ॉर्मेंस बेहतर होती है, लेकिन क्लाइंट के लिए डिपेंडेंसी अपग्रेड करना ज़रूरी हो जाता है. (I48e65)- Compose Multiplatform 1.11.0 पर अपग्रेड करते समय, JetBrains के पुराने फ़ोर्क वर्शन के साथ सिंबल डुप्लीकेट होने से रोकें. (Iccd64)
- उस समस्या को ठीक किया गया है जिसमें डिफ़ॉल्ट पैरामीटर के साथ
rememberViewModelStoreProviderका इस्तेमाल करने पर, रइकंपोज़िशन के दौरानViewModelsको गलत तरीके से हटाया जा रहा था. अब प्रोवाइडर, सिर्फ़ तब फिर से बनाता है, जब माता-पिता के मालिकाना हक या साफ़ तौर पर कुंजी में बदलाव होता है. (Ibe296, b/501792448)
वर्शन 2.11.0-beta01
22 अप्रैल, 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta01 रिलीज़ हो गया है. वर्शन 2.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- कुंजी के साथ और कुंजी के बिना इस्तेमाल करने के लिए,
rememberViewModelStoreOwnerऔरrememberViewModelStoreProviderको अलग-अलग फ़ंक्शन में बांटें. (Ifd154, b/500802788)
गड़बड़ियां ठीक की गईं
- Compose
compileSdkको एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)
वर्शन 2.11.0-alpha03
25 मार्च, 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha03 रिलीज़ हो गया है. वर्शन 2.11.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
ViewModelStoreProviderकंस्ट्रक्टर मेंparentKeyको एक वैकल्पिक पैरामीटर बनाएं. इसकी डिफ़ॉल्ट वैल्यूnullहोगी. साथ ही, इसेparentStoreयाparentOwnerके बाद ले जाएं. इससे, शेयर किए गए स्कोप के कोड की ज़रूरत न होने पर, इंस्टैंटिएशन आसान हो जाता है. (I66b67)ViewModelStoreNavEntryDecoratorअबViewModelStoreके बजायViewModelStoreOwnerस्वीकार करता है. इससे Navigation3, पैरंट के डिफ़ॉल्टCreationExtrasऔरViewModelProvider.Factoryको नेस्ट किए गए ViewModels में भेज पाता है. इससे ऐप्लिकेशन-लेवल की डिपेंडेंसी के लिए सहायता मिलती है. (Ia6018, b/434651920)- यूनीक कुंजी का इस्तेमाल करके,
ViewModelStoreProviderस्टेट को अलग करें. इससे, डिसपोज़ल के दौरान एक ही तरह की सेवा देने वाली कंपनियों को एक-दूसरे के ViewModels को अनजाने में मिटाने से रोका जा सकता है. (I59c0b, b/434651920) ViewModelProvider.get<VM>(key: String)एक्सटेंशन फ़ंक्शन जोड़ें. इससे डेवलपर, Kotlin के रीफ़ाइड टाइप पैरामीटर के साथ कस्टमkeyका इस्तेमाल करके, ViewModels को ज़्यादा आसानी से वापस पा सकते हैं. इससे क्लास टाइप को साफ़ तौर पर पास करने की ज़रूरत नहीं पड़ती. (Ic1f59)ViewModelStoreProviderमेंdefaultArgsका इस्तेमाल करने की सुविधा जोड़ी गई है. इससे ViewModels को डिफ़ॉल्टSavedStateवैल्यू के साथ शुरू किया जा सकेगा. (I1e933, b/434651920, b/165642391)removeViewModelStoreOnPopऔर उससे जुड़ेViewModelStoreNavEntryDecoratorDefaultsको बंद कर दिया गया है. यह एपीआई, कॉन्फ़िगरेशन में किए गए बदलावों के लिए एक समाधान था. अब इन बदलावों को इंटरनल तौर पर मैनेज किया जाता है. अब पॉप पर, सभी डेकोरेटर की स्थिति को एक साथ मिटाना होगा. इसमें ViewModels भी शामिल हैं. डेकोरेटर की स्टेट को बनाए रखने के लिए, जब तक कि पिछली गतिविधियां NavDisplay को पास न हो जाएं,rememberDecoratedNavEntriesएपीआई का इस्तेमाल करें. (I852d9)
गड़बड़ियां ठीक की गईं
- क्लास का नाम दिखाने के लिए,
CreationExtras.KeyमेंtoString()जोड़ें. (I5de52)
वर्शन 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, Compose के बाहर भी उपलब्ध है. इसका इस्तेमाल Activities, Fragments, और/या Views के साथ किया जा सकता है.
नई सुविधाएं
- ViewModel Navigation3 में सभी केएमपी टारगेट के लिए सहायता जोड़ी गई. (I60fa5)
- कस्टम ओनर कॉम्पोनेंट बनाते समय, बॉयलरप्लेट को कम करने के लिए
LifecycleOwner,ViewModelStoreOwner, औरSavedStateRegistryOwnerके लिए फ़ैक्ट्री फ़ंक्शन जोड़े गए. (I9682c) - बिना किसी नाम या वेब पते वाले ऑब्जेक्ट को इंस्टैंटिएट किए बिना लाइफ़साइकल इवेंट को मॉनिटर करने की अनुमति देने के लिए, लैंबडा पर आधारित
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 के लिए पहले से बना हुआ इंटिग्रेशन उपलब्ध कराता है. इससेViewModelइंस्टेंस को अलग-अलग स्क्रीन (‘entries’) के लिए स्कोप किया जा सकता है. इसके लिए,rememberViewModelStoreNavEntryDecorator()एपीआई का इस्तेमाल करें:@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 में ये बदलाव शामिल हैं.
नई सुविधाएं
- लाइफ़साइकल
*-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-testingKMP आर्टफ़ैक्ट उपलब्ध है. इसमें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अब जेवीएम डेस्कटॉप और Android टारगेट पर उपलब्ध है.
व्यवहार में बदलाव
Lifecycle.DESTROYEDस्थिति आखिरी स्थिति होती है. अब अगर किसीLifecycleको इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश की जाती है, तोIllegalStateExceptionदिखेगा.SavedStateHandleमें अब ऐसी कोई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को कॉल करने के लिए, नई Lint समस्या जोड़ता है. इसके बजाय,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को इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश की जाती है, तोIllegalStateExceptionदिखेगा. (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जैसे एपीआई को सामान्य source set में उपलब्ध कराया जा सके. (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से: Lifecycle Runtime Compose अब Compose Runtime1.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को सामान्य सोर्स सेट (KMP) में ले जाएं. 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अब जेवीएम डेस्कटॉप और 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.ReportFragmentके ProGuard नियमों को अपडेट करें, ताकि कोड को अस्पष्ट करने की अनुमति दी जा सके . (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लाइफ़साइकल डिपेंडेंसी के वर्शन 2.8+ को मिक्स करने पर, अब क्रैश नहीं होगा. साथ ही, 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का इस्तेमाल करता है. अब इसमेंAutoCloseableऑब्जेक्ट जोड़ने की सुविधा उपलब्ध है. साथ ही, इसमेंkeyकी सुविधा भी है, ताकि उन्हें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 Compatibility
lifecycle-viewmodel आर्टफ़ैक्ट और ViewModel, ViewModelStore, ViewModelStoreOwner, और ViewModelProvider जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं.
इस बदलाव को लागू करने के लिए, ViewModelProvider पर मौजूद उन तरीकों को बदला गया है जो java.lang.Class<T> लेते थे. अब उनके बदले ऐसे तरीके इस्तेमाल किए जा रहे हैं जो kotlin.reflect.KClass<T> लेते हैं.
Android पर बाइनरी कंपैटिबिलिटी को बनाए रखा गया है. हालांकि, Android API की तुलना में, सामान्य 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में ट्रांसफ़र कर दिया गया है. साथ ही, यह Android आर्टफ़ैक्ट को शिप करता है, जोandroidx.composeके लिए मल्टीप्लेटफ़ॉर्म सपोर्ट से मेल खाता है. (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 की तुलना में, सामान्य 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-ktxके कोटलिन एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Id787b, b/274800183)lifecycle-runtime-ktxके कोटलिन एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Ic3686, b/274800183)lifecycle-livedata-core-ktxके Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ट्रांसफ़र कर दिया गया है. (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 का इस्तेमाल करने वाले लोग, अब
Lifecycle.Eventके आधार पर Compose साइड इफ़ेक्ट चलाने के लिएLifecycleEventEffectका इस्तेमाल कर सकते हैं.
@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को सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था, पैरंटSavedStateRegistryमें स्थिति को सेव किए बिनाsave()को कॉल किया जाता था, और फिर स्थिति को दोबारा रीस्टोर किया जाता था. इससे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)Lifecycle.Event.ON_STARTऔरLifecycle.Event.ON_STOPइवेंट के कॉल बैक के आधार पर, ComposeSideEffects को चलाने के लिएLifecycleStartEffectएपीआई जोड़ा गया है. (I5a8d1, b/235529345)Lifecycle.Eventके आधार पर ComposeSideEffects को चलाने के लिए,LifecycleEventEffectएपीआई जोड़ा गया है. (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 के कीप नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले 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()API अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (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)
गड़बड़ियां ठीक की गईं
SavedStateHandleअबClassCastExceptionके साथ क्रैश नहीं होता है. ऐसा तब होता है, जब गलत क्लास टाइप के साथget()को कॉल किया जाता है. (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()API उपलब्ध कराता है. यहLiveDataके बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlowदिखाता है.ViewModel CreationExtras - कस्टम
ViewModelProvider.Factoryलिखते समय, अबApplicationयाSavedStateHandleका ऐक्सेस पाने के लिए,AndroidViewModelFactoryयाAbstractSavedStateViewModelFactoryको बढ़ाने की ज़रूरत नहीं है. इसके बजाय, इन फ़ील्ड कोcreateके नए ओवरलोडcreate(Class<T>, CreationExtras)के ज़रिए,ViewModelProvider.Factoryकी हरCreationExtrasसबक्लास को उपलब्ध कराया जाता है. Activity1.5.0और Fragment1.5.0का इस्तेमाल करने पर, ये अतिरिक्त सुविधाएं आपकी गतिविधि या फ़्रैगमेंट अपने-आप उपलब्ध कराता है.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में नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से, `ViewModel केSavedStateHandleकी मदद सेrememberSaveableजैसे व्यवहार की अनुमति मिलती है.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }एक
addCloseable()एपीआई और नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इनकी मदद से,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 }
व्यवहार में बदलाव
Lifecycle.StateकोINITIALIZEDसेDESTROYEDपर ले जाने की कोशिश करने पर, अब हमेशा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सोर्स पास करने पर, यहNullPointerExceptionथ्रो करता है. यहnullसोर्स को ऑब्ज़र्वर तक नहीं पहुंचाता.(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(I38cfe, b/224565154) के साथ समानता बनाए रखने के लिए,SavedStateHandle.saveableमें एक्सपेरिमेंटलMutableStateओवरलोड जोड़ा गया
एपीआई में हुए बदलाव
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()API उपलब्ध कराता है. यह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 की मदद से, एक ऐसा 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एपीआई जोड़ा गया है. यहLifecycle.repeatOnLifecycleएपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम एक तय स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है. यहLifecycleOwner.addRepeatinJobएपीआई का विकल्प है. (I0f4cd)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल 2.3.1 से:
NonNullableMutableLiveDataलिंट नियम अब अलग-अलग नल वैल्यू वाले फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
Lifecycle Viewmodel Compose वर्शन 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()API की जगह काम करते हैं. (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.lifecycle.viewmodel.composeपैकेज में,androidx.compose.ui.viewinteropसे इस आर्टफ़ैक्ट में ट्रांसफ़र कर दिया गया है. (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को अपनी स्थिति सेव करने के लिए कहा जाता है, तब को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 में ये बदलाव शामिल हैं.
नई सुविधाएं
Stateऔर ट्रांज़िशन की दिशा के हिसाब सेEventजनरेट करने के लिए,Lifecycle.EventमेंdownFrom(State),downTo(State),upFrom(State),upTo(State)के स्टैटिक हेल्पर तरीके जोड़े गए.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 चेक (खास तौर परNullSafeMutableLiveData) के लिए,ObsoleteLintCustomCheckको ठीक किया गया. (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 या इसके बाद के वर्शन का इस्तेमाल करते समय, लिंट चेक नहीं चलने की समस्या को ठीक किया गया है. (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से उसकी स्थिति को सेव करने के लिए कहा जाता है, तबSavedStateProviderको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पास करने की अनुमति देता है. इससे उन मामलों में बेहतर तरीके से मदद मिलती है जहां तुरंत उपलब्ध नहीं होता है और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को वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको ऐक्टिविटी1.2.0-alpha01और फ़्रैगमेंट1.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 में ये बदलाव शामिल हैं.
लाइफ़साइकल ViewModel SavedState अब लाइफ़साइकल के अन्य आर्टफ़ैक्ट की तरह ही एक ही वर्शन शेयर करता है. 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)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, Anders Järleberg को धन्यवाद! (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) - Lifecycle
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 कोरूटीन का इस्तेमाल करने की सुविधा शामिल है. इनके बारे में ज़्यादा जानकारी यहां देखी जा सकती है.
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)कंस्ट्रक्टर हटा दिए गए हैं. इसके बजाय, अब Activity1.1.0-alpha02, Fragment1.2.0-alpha02, और Navigation2.2.0-alpha01के लिए,SavedStateViewModelFactoryडिफ़ॉल्ट फ़ैक्ट्री है. (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 में योगदान दे सकता है. इसके लिए, आपको व्यूमॉडल की नई फ़ैक्ट्री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()के पीछे काम करने वाले एपीआई को बदल दिया गया है, ताकि यह सीधे तौर परViewModelStoreके साथ काम कर सके. पहले यह सिर्फ़ViewModelStoreOwnerके साथ काम करता था. (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 से एक बग ठीक करके, Lifecycle 2.0.0 रिलीज़ किया गया है.
गड़बड़ियां ठीक की गईं
- ViewModel के उस proguard नियम को ठीक किया गया है जो कंस्ट्रक्टर को गलत तरीके से हटा देता था b/112230489
वर्शन 2.0.0-beta01
2 जुलाई, 2018
गड़बड़ियां ठीक की गईं
- LifecycleObserver के 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 पर निर्भर करते हैं. जैसे, पेजिंग.
वर्शन 1.1.0
22 जनवरी, 2018
पैकेजिंग में बदलाव
अब नई और छोटी डिपेंडेंसी उपलब्ध हैं:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
एपीआई में हुए बदलाव
- अब इस्तेमाल नहीं किए जाने वाले
LifecycleActivityऔरLifecycleFragmentको हटा दिया गया है. कृपयाFragmentActivity,AppCompatActivityया सहायताFragmentका इस्तेमाल करें. ViewModelProvidersऔरViewModelStoresमें@NonNullएनोटेशन जोड़े गए हैंViewModelProvidersकंस्ट्रक्टर अब काम नहीं करता - कृपया इसके स्टैटिक तरीकों का सीधे तौर पर इस्तेमाल करेंViewModelProviders.DefaultFactoryके इस्तेमाल पर रोक लगा दी गई है - कृपयाViewModelProvider.AndroidViewModelFactoryका इस्तेमाल करें- स्टैटिक
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)मेथड को जोड़ा गया है, ताकिViewModelऔरAndroidViewModelइंस्टेंस बनाने के लिए, सही स्टैटिकFactoryको वापस पाया जा सके.