लाइफ़साइकल
इस टेबल में, androidx.lifecycle
ग्रुप के सभी आर्टफ़ैक्ट की सूची दी गई है.
सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
lifecycle-* | 2.9.2 | - | - | - |
lifecycle-viewmodel-navigation3 | - | - | - | 1.0.0-alpha03 |
डिपेंडेंसी का एलान करना
Lifecycle पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
ग्रूवी
dependencies { def lifecycle_version = "2.9.2" 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:1.0.0-alpha03" // 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.9.2" 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:1.0.0-alpha03") // 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
ग्रूवी
dependencies { def lifecycle_version = "2.9.2" 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.9.2" 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 का दस्तावेज़ देखें.
Lifecycle ViewModel Navigation3 Version 1.0.0
वर्शन 1.0.0-alpha03
2 जुलाई, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
और androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha03 में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel Navigation 3 अब Navigation3 Alpha05 पर निर्भर करता है
वर्शन 1.0.0-alpha02
18 जून, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
और androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये कमिट शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
, Navigation31.0.0-alpha04
में हुए बदलावों पर निर्भर करता है. (Icd0fd, b/420991203)
वर्शन 1.0.0-alpha01
23 मई, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
- Lifecycle ViewModel Navigation3, Navigation3 के साथ बनाई गई एक नई लाइब्रेरी है. इसे
ViewModels
के साथ इंटिग्रेशन की सुविधा देने के लिए बनाया गया है.androidx.lifecycle:lifecycle-viewmodel-navigation3
आर्टफ़ैक्ट,ViewModelStoreNavEntryDecorator
उपलब्ध कराता है. यह हरNavEntry
के कॉन्टेंट को यूनीकViewModelStoreOwner
उपलब्ध कराता है. यहrememberViewModelStoreNavEntryDecorator()
भी उपलब्ध कराता है, ताकि यह पक्का किया जा सके कि कॉन्फ़िगरेशन में बदलाव होने पर डेकोरेटर को सही तरीके से मैनेज किया जा रहा है.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
वर्शन 2.9
वर्शन 2.9.2
16 जुलाई, 2025
androidx.lifecycle:lifecycle-*:2.9.2
रिलीज़ हो गया है. वर्शन 2.9.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल आर्टफ़ैक्ट में नए Kotlin Multiplatform (KMP) टारगेट जोड़े गए. लाइफ़साइकल अब इन प्लैटफ़ॉर्म पर काम करता है: JVM (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). ध्यान दें कि
*-compose
आर्टफ़ैक्ट में कोई नया केएमपी टारगेट नहीं जोड़ा गया है, क्योंकि यह Compose 1.9 की स्टेबल रिलीज़ पर निर्भर करता है. (I01cb8).
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल अब एनोटेशन
1.9.1
पर निर्भर करता है, ताकि नए केएमपी टारगेट (Ic9e4f, b/397701294) के लिए सहायता चालू की जा सके.
वर्शन 2.9.1
4 जून, 2025
androidx.lifecycle:lifecycle-*:2.9.1
रिलीज़ हो गया है. वर्शन 2.9.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
SavedStateHandle.remove(key)
केSavedStateHandle.getMutableStateFlow(key)
स्टेटस को हटाने से जुड़ी समस्या ठीक की गई. (d5f939, b/418746333)
वर्शन 2.9.0
7 मई, 2025
androidx.lifecycle:lifecycle-*:2.9.0
रिलीज़ हो गया है. वर्शन 2.9.0 में ये कमिट शामिल हैं.
2.8.0 के बाद हुए अहम बदलाव
androidx.lifecycle:lifecycle-viewmodel-testing
का नया KMP आर्टफ़ैक्ट उपलब्ध है. इसमें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
मॉड्यूल अब KMP के साथ काम करता है. इसमेंTestLifecycleOwner
जैसे एपीआई शामिल हैं.lifecycle-viewmodel-savedstate
मॉड्यूल अब KMP के साथ काम करता है. इसमेंSavedStateHandle
जैसे एपीआई शामिल हैं.androidx.compose.ui.platform.LocalLifecycleOwner
अब सामान्य सोर्स सेट में उपलब्ध है.NewInstanceFactory
अब JVM डेस्कटॉप और 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 में ये कमिट शामिल हैं.
वर्शन 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 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
ViewModelProvider.get
के साथ@MainThread
एनोटेशन जोड़ें. यह सुविधा, KMP के साथ काम करने वाले सभी प्लैटफ़ॉर्म पर उपलब्ध है. (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 annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. 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
अब KMP के साथ काम करता है. इससे आपको सामान्य कोड में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
अब सही तरीके से पूरा होता है, जबLifecycle
DESTROYED
होता है (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
मॉड्यूल को अब KMP के साथ काम करने के लिए कॉन्फ़िगर किया गया है. ऐसा इसलिए किया गया है, ताकिSavedStateHandle
जैसे एपीआई को आने वाले समय में रिलीज़ होने वाले वर्शन में, कॉमन सोर्स सेट में उपलब्ध कराया जा सके. (I503ed, I48764, b/334076622)
वर्शन 2.9.0-alpha03
18 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
रिलीज़ हो गया है. वर्शन 2.9.0-alpha03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.6
से:NullSafeMutableLiveData
Lint की गड़बड़ी में, स्मार्ट कास्ट के लिए बेहतर सहायता उपलब्ध है. इससे फ़ॉल्स पॉज़िटिव से बचा जा सकता है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल
2.8.6
से: लाइफ़साइकल रनटाइम कंपोज़ अब कंपोज़ रनटाइम1.7.1
पर निर्भर करता है - लाइफ़साइकल रनटाइम अब ProfileInstaller
1.4.0
पर निर्भर करता है
वर्शन 2.9.0-alpha02
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.5
से:androidx.lifecycle.ReportFragment
ProGuard के नियमों को अपडेट करें, ताकि कोड को अस्पष्ट करने की अनुमति दी जा सके . (ff898e1)
बाहरी योगदान
androidx.compose.ui.platform.LocalLifecycleOwner
को सामान्य सोर्स सेट (केएमपी) में ले जाएं. योगदान देने के लिए, JetBrains के इवान माटकोव को धन्यवाद. (8cd5d03)- लाइफ़साइकल
2.8.5
से: SavedStateHandle.saveable` एक्सटेंशन डेलिगेट अब शून्य हो सकने वाली वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz का धन्यवाद. (0d78ea6)
वर्शन 2.9.0-alpha01
7 अगस्त, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये कमिट शामिल हैं.
Kotlin Multiplatform
lifecycle-testing
अब KMP के साथ काम करता है. (Iea41e)linuxArm64
Kotlin मल्टीप्लैटफ़ॉर्म टारगेट के लिए सहायता जोड़ी गई (I139d3, b/338268719)
नई सुविधाएं
- एक नया
androidx.lifecycle:lifecycle-viewmodel-testing
KMP आर्टफ़ैक्ट उपलब्ध है. यहViewModelScenario
क्लास उपलब्ध कराता है, ताकि ViewModels को अलग से टेस्ट किया जा सके. यहonCleared
(सभी प्लैटफ़ॉर्म) औरSavedStateHandle
(सिर्फ़ Android) के साथ काम करता है. (337f68d, c9b3409, 9799a95c, b/264602919) ViewModelProvider
की मदद सेViewModel
बनाने की सुविधा अब थ्रेड सेफ़ है. साथ ही,@MainThread
एनोटेशन हटा दिए गए हैं. (Ifd978, b/237006831)
एपीआई में हुए बदलाव
- बिना नाम वाले
CreationExtras.Key
ऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए,CreationExtras.Key()
फ़ैक्ट्री फ़ंक्शन जोड़ें. (I970ee) CreationExtras
में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससेCreationExtras
के साथin
,+=
, और+
का इस्तेमाल किया जा सकता है. (Ib4353)CreationExtras
अबequals
,hashCode
, औरtoString
तरीकों को लागू करता है. (Ib4353)NewInstanceFactory
अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है. (d3d0892)- Kotlin लैंग्वेज के वर्शन 2.0 (I39df2) में, Application को सुरक्षित तरीके से दिखाने के लिए इनलाइन एक्सटेंशन प्रॉपर्टी
गड़बड़ियां ठीक की गईं
- नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि 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
का इस्तेमाल करता है. अब इसमेंkey
ऑब्जेक्ट जोड़ने की सुविधा उपलब्ध है. साथ ही, इसमेंkey
भी शामिल है, ताकि उन्हेंgetCloseable()
के ज़रिए वापस पाया जा सके.AutoCloseable
अब बिना कुंजी के
LifecycleStartEffect
औरLifecycleResumeEffect
को कॉल करने पर गड़बड़ी होती है. यहDisposableEffect
एपीआई के लिए इस्तेमाल किए जाने वाले तरीके के मुताबिक है.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
की जगह अबLiveData.toPublisher(lifecycleOwner)
का इस्तेमाल किया जाता है.lifecycle-livedata-core-ktx
Kotlin एक्सटेंशन को अबlifecycle-livedata-core
मॉड्यूल में ट्रांसफ़र कर दिया गया है.NullSafeMutableLiveData
को फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो.
लाइफ़साइकल Kotlin Multiplatform के साथ काम करता है
Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
, और LifecycleRegistry
में मौजूद मुख्य लाइफ़साइकल एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं.
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-common
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtime
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtime-ktx
अब खाली है. सभी एपीआई कोlifecycle-runtime
में ट्रांसफ़र कर दिया गया है.lifecycle-runtime-compose
सभी एपीआई कोcommon
पर ले जाता है औरandroidx.compose
के मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट शिप करता है.
ViewModel Kotlin Multiplatform के साथ काम करता है
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं.
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो java.lang.Class<T>
लेता था. अब यह kotlin.reflect.KClass<T>
लेता है.
Android पर बाइनरी कंपैटिबिलिटी को बनाए रखा गया है. हालांकि, Android API की तुलना में, सामान्य API में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProvider
इंस्टेंस को सीधे कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों से बनाया जाता है. ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
ViewModelProvider.Factory
से एक्सटेंड हों औरcreate
तरीके का इस्तेमाल करें. यह तरीका,CreationExtras
लेता है. इसके अलावा,viewModelFactory
Kotlin 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 आर्टफ़ैक्ट शिप करता है.
व्यवहार में बदलाव
- अगर एक ही
clazz: KClass<VM : ViewModel>
वालाinitializer
पहले से ही जोड़ा जा चुका है, तोInitializerViewModelFactory
(इसमेंviewModelFactory
बिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentException
दिखाएगा. (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-runtime
AAR में पैकेज किया गया है. (aosp/3038274, b/322382422)- ViewModel से जुड़े
AutoCloseable
इंस्टेंस को हटाने के क्रम में हुए अनचाहे बदलाव को ठीक किया गया है.addCloseable(String, AutoCloseable)
,addClosable(AutoCloseable)
, और फिरonCleared()
के पिछले क्रम को वापस लाया गया है. (aosp/3041632) - नेटिव और JVM डेस्कटॉप एनवायरमेंट के लिए,
viewModelScope
के डिफ़ॉल्ट क्रिएशन बिहेवियर को बेहतर बनाया गया है. (aosp/3039221)
बाहरी योगदान
- JVM Desktop पर मुख्य थ्रेड की जांच करने की सुविधा को बेहतर बनाने के लिए, Victor Kropp का धन्यवाद. (aosp/3037116)
वर्शन 2.8.0-beta01
17 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये कमिट शामिल हैं.
नई सुविधाएं
lifecycle-runtime-compose
आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके कोड कोcommon
में ले जाया गया है. साथ ही, यहandroidx.compose
के लिए मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. (If7a71, I4f4a0, b/331769623)
वर्शन 2.8.0-alpha04
3 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसका कोडcommon
पर ले जाया गया है. साथ ही, यहandroidx.compose
की मल्टीप्लेटफ़ॉर्म सुविधा के साथ काम करने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. इस बदलाव को लागू करने के लिए, कंपोज़ेबलviewModel
तरीके में अबjava.lang.Class
के साथ-साथKClass
भी स्वीकार किया जाता है. (b/330323282)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
को फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो. (I2d8c1, Iafb18, I03463, I7ecef)
डिपेंडेंसी अपडेट करना
lifecycle-viewmodel-compose
आर्टफ़ैक्ट अब Compose 1.6.0 पर निर्भर करता है.- लाइफ़साइकल अब Profile Installer 1.3.1 पर निर्भर करता है.
वर्शन 2.8.0-alpha03
20 मार्च, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
ViewModel.viewModelScope
अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इससे आपको अपना डिसपैचर औरSupervisorJob()
इंजेक्ट करने की अनुमति मिलती है. इसके अलावा,runTest
में उपलब्धbackgroundScope
का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin Multiplatform के साथ काम करने की सुविधा
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं. (b/214568825)
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो java.lang.Class<T>
लेता था. अब यह kotlin.reflect.KClass<T>
लेता है.
Android पर बाइनरी कंपैटिबिलिटी को बनाए रखा गया है. हालांकि, Android API की तुलना में, सामान्य API में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProvider
इंस्टेंस को सीधे कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों से बनाया जाता है. ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
ViewModelProvider.Factory
से एक्सटेंड हों औरcreate
तरीके का इस्तेमाल करें. यह तरीका,CreationExtras
लेता है. इसके अलावा,viewModelFactory
Kotlin DSL का इस्तेमाल किया जा सकता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
- गैर-JVM प्लैटफ़ॉर्म पर कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
मिलेगा. JVM प्लैटफ़ॉर्म पर, अगर कोई कस्टम फ़ैक्ट्री नहीं दी जाती है, तो no-args ViewModel कंस्ट्रक्टर का इस्तेमाल करके कंपैटिबिलिटी बनाए रखी जाती है. viewModelScope
, उन प्लैटफ़ॉर्म परEmptyCoroutineContext
पर फ़ॉलबैक करेगा जहांDispatchers.Main
उपलब्ध नहीं है. उदाहरण के लिए, Linux).
व्यवहार में बदलाव
- अगर एक ही
clazz: KClass<VM : ViewModel>
वालाinitializer
पहले से ही जोड़ा जा चुका है, तोInitializerViewModelFactory
(इसमेंviewModelFactory
बिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentException
दिखाएगा. (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
Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Id787b, b/274800183)lifecycle-runtime-ktx
Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (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.Event
s को अबFlow
के तौर पर देखा जा सकता है. इसके लिए,Lifecycle.asFlow().
(If2c0f, b/176311030) का इस्तेमाल करेंLifecycleResumeEffect
एपीआई कोLifecycle.Event.ON_RESUME
औरLifecycle.Event.ON_PAUSE
, दोनों इवेंट कॉलबैक के आधार पर कंपोज़SideEffect
चलाने के लिए जोड़ा गया है. (I60386, b/235529345)LifecycleStartEffect
एपीआई कोLifecycle.Event.ON_START
औरLifecycle.Event.ON_STOP
इवेंट के कॉल बैक के आधार पर, कंपोज़SideEffect
s को चलाने के लिए जोड़ा गया है. (I5a8d1, b/235529345)Lifecycle.Event
के आधार पर ComposeSideEffect
s को चलाने के लिए,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 keep नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले ProGuard कोड को, इस्तेमाल के अपने खास मामले के लिए, अपने कीप नियम देने होंगे. (Ia12fd)
वर्शन 2.6
वर्शन 2.6.2
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.6.2
रिलीज़ हो गया है. वर्शन 2.6.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
SavedStateHandle
को सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था,save()
को पैरंटSavedStateRegistry
में स्थिति को सेव किए बिना कॉल किया जाता था, और फिर स्थिति को फिर से रीस्टोर किया जाता था. इससे,rememberSaveable
और Navigation Compose केNavHost
के बीच इंटरैक्शन की समस्या ठीक हो जाती है. (aosp/2729289)
वर्शन 2.6.1
22 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.1
रिलीज़ हो गया है. वर्शन 2.6.1 में ये कमिट शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
lifecycle-viewmodel-savedstate
अब SavedState1.2.1
पर निर्भर करता है. (cd7251)- लाइफ़साइकल अब ProfileInstaller
1.3.0
पर निर्भर करता है. (f9d30b)
वर्शन 2.6.0
8 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.0
रिलीज़ हो गया है. वर्शन 2.6.0 में ये कमिट शामिल हैं.
2.5.0 के बाद हुए ज़रूरी बदलाव
LiveData
में अब एक नईisInitialized
प्रॉपर्टी शामिल है. इससे पता चलता है किLiveData
पर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value
,null
वैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी याnull
की कोई वैल्यू सेट की गई थी.MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है.- लाइफ़साइकल के बारे में जानकारी रखने वाले
collectAsStateWithLifecycle()
केStateFlow
औरFlow
पर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और इसकी नई वैल्यू को Compose State के तौर पर दिखाता है. Lifecycle.launchWhenX
औरLifecycle.whenX
तरीकों को बंद कर दिया गया है, क्योंकि पॉज़ करने वाले डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. एक बार काम को निलंबित करने के बारे में ज़्यादा जानकारी के लिए, कृपया यह जानकारी देखें. इसमें बताया गया है कि यह सुविधा सुरक्षित क्यों नहीं है.- Kotlin कन्वर्ज़न - लाइफ़साइकल की कई क्लास को Kotlin में बदल दिया गया है. बदली गई सभी क्लास, पिछले वर्शन के साथ बाइनरी कंपैटिबिलिटी बनाए रखती हैं. Kotlin में लिखे गए इन क्लास के लिए, सोर्स के साथ काम न करने वाले बदलाव किए गए हैं:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
नीचे दी गई टेबल में, लाइफ़साइकल के नए वर्शन के लिए सोर्स कन्वर्ज़न दिए गए हैं.
लाइफ़साइकल 2.5 | लाइफ़साइकल 2.5 (KTX) | लाइफ़साइकल 2.6 |
---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin में बनाए गए
Observer
केonChanged
तरीके की नल वैल्यू अब जेनरिक टाइप की नल वैल्यू से मेल खाती है. अगर आपकोObserver.onChanged()
को नल वैल्यू स्वीकार करने वाले टाइप के तौर पर इस्तेमाल करना है, तो आपकोObserver
को नल वैल्यू स्वीकार करने वाले टाइप के साथ इंस्टैंशिएट करना होगा. - इन क्लास को भी Kotlin में बदल दिया गया है, लेकिन ये सोर्स के साथ काम करती हैं:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
वर्शन 2.6.0-rc01
22 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर पिछले
LiveData
के लिए कोई वैल्यू सेट की गई है, तोLiveData.distinctUntilChanged()
एक्सटेंशन अब दिखाए गएLiveData
के लिएvalue
सेट करता है. इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveData
से अपडेट की गई वैल्यू, सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()
से मिलेLiveData
को ऑब्ज़र्व करना शुरू किया जाएगा. (Ib482f)
वर्शन 2.6.0-beta01
8 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये कमिट शामिल हैं.
Kotlin कन्वर्ज़न
LifecycleOwner
को अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetLifecycle()
फ़ंक्शन को लागू करने के बजाय,lifecycle
प्रॉपर्टी को ओवरराइड करना होगा. (I75b4b, b/240298691)ViewModelStoreOwner
अब Kotlin में उपलब्ध है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetViewModelStore()
फ़ंक्शन को लागू करने के बजाय,viewModelStore
प्रॉपर्टी को ओवरराइड करना होगा. (I86409, b/240298691)LifecycleOwner
पर मौजूद Kotlin एक्सटेंशन,lifecycleScope
फ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (I41d78, b/240298691)Lifecycle
पर मौजूद Kotlin एक्सटेंशन,coroutineScope
फ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (Iabb91, b/240298691)
वर्शन 2.6.0-alpha05
25 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
रिलीज़ हो गया है. वर्शन 2.6.0-alpha05 में ये कमिट शामिल हैं.
Kotlin कन्वर्ज़न
Transformations
को अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर परTransformations.map
जैसे सिंटैक्स का इस्तेमाल कर रही थीं. Kotlin कोड को अब Kotlin एक्सटेंशन के उस तरीके का इस्तेमाल करना होगा जो पहले सिर्फ़lifecycle-livedata-ktx
का इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय, इन तरीकों के ऐसे वर्शन इस्तेमाल नहीं किए जा सकते जोandroidx.arch.core.util.Function
तरीके का इस्तेमाल करते हैं. इनकी जगह, KotlinFunction1
का इस्तेमाल करने वाले वर्शन का इस्तेमाल किया जा सकता है. इस बदलाव से बाइनरी कंपैटबिलिटी बनी रहती है. (I8e14f)ViewTreeViewModelStoreOwner
को अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeViewModelStoreOwner
औरandroidx.lifecycle.findViewTreeViewModelStoreOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट और ढूंढा जा सके. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
इंटरफ़ेस को अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई क्लास के लिए, सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछले फ़ंक्शन लागू करने के बजाय,defaultViewModelProviderFactory
औरdefaultViewModelCreationExtras
प्रॉपर्टी को बदलना होगा. (Iaed9c, b/240298691)Observer
को अब Kotlin में लिखा गया है. इसकेonChanged()
तरीके में, अब पैरामीटर के लिएvalue
नाम का इस्तेमाल किया जाता है. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
को अब Kotlin में लिखा गया है (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
वर्शन 2.6.0-alpha04
11 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
रिलीज़ हो गया है. वर्शन 2.6.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
LiveData
में अब एक नईisInitialized
प्रॉपर्टी शामिल है. इससे पता चलता है किLiveData
पर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value
,null
वैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी याnull
की कोई वैल्यू सेट की गई थी. (Ibd018)
एपीआई में हुए बदलाव
lifecycle-runtime-compose
केcollectAsStateWithLifecycle()
एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)Lifecycle.launchWhenX
औरLifecycle.whenX
तरीकों को बंद कर दिया गया है, क्योंकि पॉज़ करने वाले डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. (Iafc54, b/248302832)
Kotlin कन्वर्ज़न
ViewTreeLifecycleOwner
को अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeLifecycleOwner
औरandroidx.lifecycle.findViewTreeLifecycleOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट और ढूंढा जा सके. यहlifecycle-runtime-ktx
में मौजूद पिछले Kotlin एक्सटेंशन की जगह ले लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
को अब Kotlin में लिखा गया है.lifecycle-reactivestreams-ktx
में मौजूद Kotlin एक्सटेंशन को अबlifecycle-reactivestreams
मॉड्यूल में ले जाया गया है. साथ ही, ये Kotlin में लिखे गए कोड के लिए प्राइमरी सर्फ़ेस बन गए हैं. अगर आपने पहले से Kotlin एक्सटेंशन मेथड एपीआई का इस्तेमाल नहीं किया है, तो Kotlin में लिखे गए कोड के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
, औरViewModelStore
को अब Kotlin में लिखा गया है (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
गड़बड़ियां ठीक की गईं
SavedStateHandle
अब गलत क्लास टाइप के साथget()
को कॉल करने पर,ClassCastException
के साथ क्रैश नहीं होता. (I6ae7c)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल के अलग-अलग मॉड्यूल के बीच की रुकावटों से जुड़ी समस्या को ठीक किया गया है. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
से मिलने वाली गड़बड़ियों के मैसेज में अब ज़्यादा जानकारी शामिल होती है. इससे डेवलपर को उस कॉम्पोनेंट के बारे में पता चलता है जिसकी वजह से गड़बड़ी हुई है. (Idf4b2, b/244910446)
वर्शन 2.6.0-alpha02
7 सितंबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)
गड़बड़ियां ठीक की गईं
Lifecycle
आर्टफ़ैक्ट में अब constraints शामिल हैं. इनसे यह पक्का किया जाता है कि एक-दूसरे पर निर्भर लाइफ़साइकल आर्टफ़ैक्ट, एक ही वर्शन का इस्तेमाल करें. साथ ही, किसी एक आर्टफ़ैक्ट को अपग्रेड करने पर, अन्य डिपेंडेंसी अपने-आप अपग्रेड हो जाएं. b/242871265FlowLiveData.asFlow()
अब थ्रेड-सेफ़्टी और कॉन्टेक्स्ट को सुरक्षित रखने के लिए, अपनेChannel
को लागू करने के बजायcallbackFlow
बनाता है. (I4a8b2, b/200596935)FlowLiveData
काasLiveData
फ़ंक्शन, अब नयाLiveData
ऑब्जेक्ट बनाते समयStateFlow
की शुरुआती वैल्यू को सुरक्षित रखेगा. (I3f530, b/157380488)- लाइफ़साइकल
2.5.1
से:AndroidViewModelFactory
के कस्टम इंप्लीमेंटेशन, अबLifecycle
2.4+ (I5b315, b/238011621) के साथ स्टेटफ़ुल कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल करते हैं
वर्शन 2.6.0-alpha01
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
StateFlow
औरFlow
केcollectAsStateWithLifecycle
पर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, इसकी नई वैल्यू को कंपोज़ स्टेट के तौर पर दिखाता है. लाइफ़साइकल के कम से कम किसी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
के कस्टम तरीके से लागू किए गए वर्शन, अबLifecycle
2.4+ के साथ स्टेटफ़ुलAndroidViewModelFactory
कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल करते हैं. (I5b315, b/238011621)
वर्शन 2.5.0
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0
रिलीज़ हो गया है. वर्शन 2.5.0 में ये कमिट शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
SavedStateHandle
अबgetStateFlow()
एपीआई उपलब्ध कराता है. यहLiveData
के बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlow
दिखाता है.ViewModel CreationExtras - कस्टम
ViewModelProvider.Factory
लिखते समय, अबApplication
याSavedStateHandle
का ऐक्सेस पाने के लिए,AndroidViewModelFactory
याAbstractSavedStateViewModelFactory
को बढ़ाने की ज़रूरत नहीं है. इसके बजाय, ये फ़ील्डcreate
के नए ओवरलोड के ज़रिए,CreationExtras
के तौर पर हरViewModelProvider.Factory
सबक्लास को उपलब्ध कराए जाते हैं:create(Class<T>, CreationExtras)
. Activity1.5.0
और Fragment1.5.0
का इस्तेमाल करने पर, ये एक्स्ट्रा अपने-आप आपकी गतिविधि या फ़्रैगमेंट से मिल जाते हैं.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
अबviewModelFactory
Kotlin 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 }
व्यवहार में बदलाव
INITIALIZED
सेDESTROYED
मेंLifecycle.State
को ले जाने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
में कोई अटैच ऑब्ज़र्वर हो या न हो.LifecycleRegistry
की स्थितिDESTROYED
पर पहुंचने के बाद, उसके सभी ऑब्ज़र्वर हट जाएंगे.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- compileOnly Lifecycle की पिछली डिपेंडेंसी को 2.5 और इसके बाद के वर्शन के साथ मिक्स करने पर,
ViewModelProvider
अब क्रैश नहीं होगा. (I81a66, b/230454566)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
MediatorLiveData.addSource()
अबnull
सोर्स को ऑब्ज़र्वर तक पहुंचाने के बजाय,null
सोर्स पास करने परNullPointerException
दिखाता है.(Ibd0fb, b/123085232)
वर्शन 2.5.0-beta01
20 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle.saveable
प्रॉपर्टी के डेलिगेट जोड़े गए हैं, ताकि प्रॉपर्टी के नामों को कुंजियों के तौर पर इस्तेमाल करके,SavedStateHandle
में स्थिति को बनाए रखा जा सके (I8bb86, b/225014345)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें बॉटम नेविगेशन टैब में एक
NavHost
को दूसरेNavHost
में नेस्ट करने पर, कई बैक स्टैक का इस्तेमाल करते समयIllegalStateException
दिखता था. (I11bd5, b/228865698)
वर्शन 2.5.0-alpha06
6 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
रिलीज़ हो गया है. वर्शन 2.5.0-alpha06 में ये कमिट शामिल हैं.
नई सुविधाएं
rememberSaveable
के बराबर बनाने के लिए,SavedStateHandle.saveable
में एक्सपेरिमेंटलMutableState
ओवरलोड जोड़ें (I38cfe, b/224565154)
एपीआई में हुए बदलाव
CreationExtras
अब सील किए गए के बजाय ऐब्स्ट्रैक्ट है. (Ib8a7a)
गड़बड़ियां ठीक की गईं
SavedStateHandleController
की वजह से होने वालीIllegalStateException: Already attached to lifecycleOwner
गड़बड़ी को ठीक किया गया. (I7ea47, b/215406268)
वर्शन 2.5.0-alpha05
23 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
रिलीज़ हो गया है. वर्शन 2.5.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
मॉड्यूल अबSavedStateHandleSaver
उपलब्ध कराता है. यह एक एक्सपेरिमेंटल एपीआई है. यह पक्का करता है किSavedStateHandle
में मौजूद वैल्यू, उसी सेव किए गए इंस्टेंस की स्थिति के साथ सही तरीके से इंटिग्रेट की गई हों जिसका इस्तेमालrememberSaveable
करता है. (Ia88b7, b/195689777)
एपीआई में हुए बदलाव
- Java में, Lifecycle 2.3 और Lifecycle के नए वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I52c8a, b/219545060)
गड़बड़ियां ठीक की गईं
SavedStateViewFactory
अबCreationExtras
का इस्तेमाल करने की सुविधा देता है. भले ही, इसेSavedStateRegistryOwner
के साथ शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
वर्शन 2.5.0-alpha04
9 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
रिलीज़ हो गया है. वर्शन 2.5.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle
अबgetStateFlow()
एपीआई उपलब्ध कराता है. यहLiveData
के बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlow
दिखाता है. (Iad3ab, b/178037961)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
addCloseable()
एपीआई और नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इनकी मदद से,ViewModel
में एक या उससे ज़्यादाCloseable
ऑब्जेक्ट जोड़े जा सकते हैं.ViewModel
को हटाने पर, ये ऑब्जेक्ट बंद हो जाएंगे. इसके लिए,onCleared()
में मैन्युअल तरीके से कोई कार्रवाई करने की ज़रूरत नहीं होगी. (I55ea0)lifecycle-viewmodel
अब एकInitializerViewModelFactory
उपलब्ध कराता है. इसकी मदद से,CreationExtras
को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके,ViewModel
क्लास को हैंडल करने के लिए लैम्डा जोड़ा जा सकता है. (If58fc, b/216687549)lifecycle-viewmodel-compose
अबviewModel()
एपीआई उपलब्ध कराता है. यहViewModel
इंस्टेंस बनाने के लिए, लैंबडा फ़ैक्ट्री लेता है. इसके लिए, कस्टमViewModelProvider.Factory
बनाने की ज़रूरत नहीं होती. (I97fbb, b/216688927)
एपीआई में हुए बदलाव
- अब
lifecycle-viewmodel-compose
के ज़रिए,CreationExtras
के साथViewModel
बनाया जा सकता है. (I08887, b/216688927)
व्यवहार में बदलाव
INITIALIZED
सेDESTROYED
मेंLifecycle.State
को ट्रांसफ़र करने की कोशिश करने पर, अब हमेशा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)LiveData
switchMap
फ़ंक्शन पैरामीटर का आउटपुट अब शून्य हो सकता है. (I40396, b/132923666)LiveData
-ktx एक्सटेंशन को अब@CheckResult
के साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि इन फ़ंक्शन को कॉल करते समय, नतीजे का इस्तेमाल किया जाए. (Ia0f05, b/207325134)
व्यवहार में बदलाव
SavedStateHandle
अब defaultValue को सही तरीके से सेव करता है. ऐसा तब होता है, जब दी गई कुंजी के लिए कोई वैल्यू मौजूद न हो. (I1c6ce, b/178510877)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.4.1
:lifecycle-process
को Startup 1.1.1 पर निर्भर रहने के लिए अपडेट किया गया है, ताकि यह पक्का किया जा सके किProcessLifecycleInitializer
कोStartupException
से रोकने वाले फ़िक्स डिफ़ॉल्ट रूप से उपलब्ध हों. (Ib01df, b/216490724) - कस्टम
AndroidViewModel
क्लास में पैरामीटर गलत क्रम में होने पर, अब गड़बड़ी का बेहतर मैसेज दिखता है. साथ ही,ViewModel
बनाने की कोशिश की जाती है. (I340f7, b/177667711) - अब
AndroidViewModelFactory
का इस्तेमाल करके,CreationExtras
के ज़रिए व्यू मॉडल बनाया जा सकता है. इसके लिए, ऐप्लिकेशन सेट करने की ज़रूरत नहीं है. (I6ebef, b/217271656)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये कमिट शामिल हैं.
ViewModel CreationExtras
इस रिलीज़ के साथ, हम ViewModel
को बनाने के तरीके में बदलाव करने की तैयारी कर रहे हैं. ViewModelProvider.Factory
की सबक्लास के एक तय सेट के बजाय, हम स्टेटलेस फ़ैक्ट्रियों की दुनिया में जा रहे हैं. ये फ़ैक्ट्रियां, CreationExtras
नाम के नए कॉन्सेप्ट पर काम करती हैं. हर सबक्लास में अतिरिक्त फ़ंक्शन जोड़े जाते हैं. जैसे, AndroidViewModelFactory
के ज़रिए Application
कंस्ट्रक्टर पैरामीटर की अनुमति देना, SavedStateViewModelFactory
और AbstractSavedStateViewModelFactory
के ज़रिए SavedStateHandle
कंस्ट्रक्टर पैरामीटर की अनुमति देना वगैरह. (Ia7343, b/188691010, b/188541057)
इस बदलाव के बाद, ViewModelProvider
अब ViewModelProvider.Factory
के पिछले create(Class<T>)
तरीके का इस्तेमाल करके सीधे कॉल नहीं करेगा. इसके बजाय, यह create
के नए ओवरलोड को कॉल करता है: create(Class<T>, CreationExtras)
. इसका मतलब है कि ViewModelProvider.Factory
के किसी भी इंस्टेंस को अब इन सभी नए CreationExtras
का ऐक्सेस मिल गया है:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: यहString
,ViewModelProvider.get()
को पास किए गए कस्टम पासकोड का ऐक्सेस देता है.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
सेApplication
क्लास का ऐक्सेस मिलता है.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
, उसSavedStateRegistryOwner
का ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
, उसViewModelStoreOwner
का ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.DEFAULT_ARGS_KEY
, उन आर्ग्युमेंट केBundle
का ऐक्सेस देता है जिनका इस्तेमालSavedStateHandle
बनाने के लिए किया जाना चाहिए.
गतिविधि 1.5.0-alpha01
, फ़्रैगमेंट 1.5.0-alpha01
, और नेविगेशन 2.5.0-alpha01
का इस्तेमाल करते समय, ये एक्स्ट्रा डिफ़ॉल्ट रूप से उपलब्ध होते हैं. अगर उन लाइब्रेरी के पुराने वर्शन का इस्तेमाल किया जाता है, तो आपका CreationExtras
खाली होगा. ViewModelProvider.Factory
के सभी मौजूदा सबक्लास को फिर से लिखा गया है, ताकि वे लाइब्रेरी के पुराने वर्शन में इस्तेमाल किए गए लेगसी क्रिएशन पाथ और CreationExtras
पाथ, दोनों के साथ काम कर सकें. CreationExtras
पाथ का इस्तेमाल आने वाले समय में किया जाएगा.
इन CreationExtras
की मदद से, एक ऐसा ViewModelProvider.Factory
बनाया जा सकता है जो हर ViewModel
को सिर्फ़ ज़रूरी जानकारी देता है. इसके लिए, Factory के सबक्लास की सख्त हैरारकी पर भरोसा करने की ज़रूरत नहीं होती:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
हम SavedStateHandleSupport
से CreationExtras
पर createSavedStateHandle()
Kotlin एक्सटेंशन फ़ंक्शन का इस्तेमाल करते हैं, ताकि सिर्फ़ उस ViewModel के लिए SavedStateHandle
बनाया जा सके जिसे इसकी ज़रूरत है. (Ia6654, b/188541057)
कस्टम CreationExtras
, ComponentActivity
या Fragment
में getDefaultViewModelCreationExtras()
को बदलकर दिया जा सकता है. इससे, ये कस्टम ViewModelProvider.Factory
के लिए उपलब्ध हो जाते हैं. इन्हें असिस्टेड इंजेक्शन के बिल्ट-इन फ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है. इन एक्स्ट्रा को सीधे तौर पर ViewModelProvider
के साथ इस्तेमाल करने पर, ये आपके कस्टम फ़ैक्ट्री के लिए अपने-आप उपलब्ध हो जाएंगे. इसके अलावा, by viewModels()
और by activityViewModels()
Kotlin प्रॉपर्टी एक्सटेंशन का इस्तेमाल करने पर भी ये उपलब्ध हो जाएंगे. (I79f2b, b/207012584, b/207012585, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandle
को दी गई डिफ़ॉल्ट वैल्यू फिर से दिखने लगती थी. भले ही, उसेSavedStateHandle
से हटा दिया गया हो. इस वजह से,SavedStateHandle
अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b)
वर्शन 2.4
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.4.1
रिलीज़ हो गया है. वर्शन 2.4.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.5.0-alpha01
से बैकपोर्ट किया गया: इस समस्या को ठीक किया गया है. इसमेंSavedStateHandle
को दी गई डिफ़ॉल्ट वैल्यू, प्रोसेस के बंद होने और फिर से शुरू होने के बाद फिर से दिखने लगती थी. भले ही, इसेSavedStateHandle
से हटा दिया गया हो. इस वजह से,SavedStateHandle
अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b) lifecycle-process
अब Androidx Startup 1.1.1 पर निर्भर करता है. इसमें एक रिग्रेशन को ठीक किया गया है. इस रिग्रेशन में,ProcessLifecycleInitializer
का इस्तेमाल करने परStartupException
होता था. (b/216490724)
वर्शन 2.4.0
27 अक्टूबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0
रिलीज़ हो गया है. वर्शन 2.4.0 में ये कमिट शामिल हैं.
2.3.0 के बाद हुए अहम बदलाव
@OnLifecycleEvent
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserver
याDefaultLifecycleObserver
का इस्तेमाल करना चाहिए.androidx.lifecycle:lifecycle-viewmodel-compose
लाइब्रेरी को जोड़ा गया. यहviewModel()
कंपोज़ेबल औरLocalViewModelStoreOwner
उपलब्ध कराता है.- सोर्स कोड में बड़ा बदलाव:
ViewModelProvider
को Kotlin में फिर से लिखा गया है.ViewModelProvider.Factory.create
मेथड में अब नल वैल्यू वाले सामान्य टाइप इस्तेमाल नहीं किए जा सकते.
- सोर्स कोड में बड़ा बदलाव:
androidx.lifecycle:lifecycle-runtime-ktx
में नए कोरूटीन एपीआई जोड़े गए हैं:Lifecycle.repeatOnLifecycle
, एपीआई है. यह एपीआई, लाइफ़साइकल के किसी खास स्थिति में होने पर, को-रूटीन में कोड के ब्लॉक को एक्ज़ीक्यूट करता है. लाइफ़साइकल के टारगेट स्टेट में आने और उससे बाहर जाने पर, ब्लॉक रद्द हो जाएगा और फिर से लॉन्च हो जाएगा;Flow.flowWithLifecycle
, यह एक ऐसा एपीआई है जो लाइफ़साइकल के कम से कम किसी खास स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.DefaultLifecycleObserver
कोlifecycle.lifecycle-common-java8
सेlifecycle.lifecycle-common
में ले जाया गया.lifecycle.lifecycle-common-java8
,lifecycle.lifecycle-common
के अलावा कोई और सुविधा नहीं देता है. इसलिए, इस पर निर्भरता कोlifecycle.lifecycle-common
से बदला जा सकता है.lifecycle-viewmodel-ktx
से नॉन कोरूटीन एपीआई कोlifecycle-viewmodel
मॉड्यूल में ले जाया गया है.lifecycle-process
अबProcessLifecycleOwner
को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializer
करता था.अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तोContentProvider
का इस्तेमाल करके प्रोसेस लाइफ़साइकल को पहले जैसा करने के लिए, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
वर्शन 2.4.0-rc01
29 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
को Lifecycle 2.4.0-beta01 में किए गए बदलावों के बिना रिलीज़ किया गया है. वर्शन 2.4.0-rc01 में ये कमिट शामिल हैं.
वर्शन 2.4.0-beta01
15 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
@OnLifecycleEvent
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserver
याDefaultLifecycleObserver
का इस्तेमाल करना चाहिए. (I5a8fa)- DefaultLifecycleObserver को
androidx.lifecycle.lifecycle-common-java8
सेandroidx.lifecycle.lifecycle-common
में ले जाया गया.androidx.lifecycle.lifecycle-common-java8
,androidx.lifecycle.lifecycle-common
के अलावा कोई और सुविधा नहीं देता है. इसलिए, इस पर निर्भरता कोandroidx.lifecycle.lifecycle-common
से बदला जा सकता है. (I021aa) lifecycle-viewmodel-ktx
से नॉन कोरूटीन एपीआई कोlifecycle-viewmodel
मॉड्यूल में ले जाया गया है. (I6d5b2)
बाहरी योगदान
वर्शन 2.4.0-alpha03
4 अगस्त, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- सोर्स कोड में बदलाव: ViewModelProvider को Kotlin में फिर से लिखा गया है.
ViewModelProvider.Factory.create
मेथड में अब नल वैल्यू वाले सामान्य टाइप इस्तेमाल नहीं किए जा सकते. (I9b9f6)
व्यवहार में बदलाव
- अब
Lifecycle.repeatOnLifecycle
:block
को बार-बार लागू करने पर, हमेशा क्रम से लागू किया जाता है. (Ibab33)
बाहरी योगदान
repeatOnLifecycle
दस्तावेज़ में कोड स्निपेट ठीक करने के लिए, chao2zhang का धन्यवाद. #205.
वर्शन 2.4.0-alpha02
16 जून, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
lifecycle-runtime-ktx
में नयाRepeatOnLifecycleWrongUsage
लिंट चेक जोड़ा गया है. इससे यह पता चलता है किonStart()
याonResume()
मेंrepeateOnLifecycle
का गलत तरीके से इस्तेमाल कब किया गया है. (706078, b/187887400)
एपीआई में हुए बदलाव
LifecycleOwner.addRepeatingJob
एपीआई को हटा दिया गया है. इसकी जगहLifecycle.repeatOnLifecycle
का इस्तेमाल किया जा सकता है. यह स्ट्रक्चर्ड कंकरेंसी का पालन करता है और इसके बारे में तर्क देना आसान है. (I4a3a8)ProcessLifecycleInitializer
को सार्वजनिक करें, ताकि अन्यandroidx.startup.Initializer
इन्हें डिपेंडेंसी के तौर पर इस्तेमाल कर सकें. (I94c31)
गड़बड़ियां ठीक की गईं
- जब फ़ील्ड में मॉडिफ़ायर होते हैं, तब
NullSafeMutableLiveData
लिंट चेक से जुड़ी समस्या को ठीक किया गया है. (#147, b/183696616) - जेनेरिक का इस्तेमाल करते समय,
NullSafeMutableLiveData
लिंट चेक से जुड़ी एक और समस्या ठीक की गई. (#161, b/184830263)
बाहरी योगदान
NullSafeMutableLiveData
लिंट चेक को बेहतर बनाने के लिए, maxsav को धन्यवाद. (#147, b/183696616)NullSafeMutableLiveData
लिंट चेक को बेहतर बनाने के लिए, kozaxinan को धन्यवाद. (#161, b/184830263)
वर्शन 2.4.0-alpha01
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये कमिट शामिल हैं.
व्यवहार में बदलाव
lifecycle-process
अबProcessLifecycleOwner
को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializer
करता था.अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तोContentProvider
का इस्तेमाल करके प्रोसेस लाइफ़साइकल को पहले जैसा करने के लिए, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
एपीआई में हुए बदलाव
Flow.flowWithLifecycle
एपीआई जोड़ा गया है. यहFlow.flowWithLifecycle
एपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम एक तय स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.Lifecycle.repeatOnLifecycle
यहLifecycleOwner.addRepeatinJob
API का विकल्प है. (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.compose.ui.viewinterop
सेandroidx.lifecycle.viewmodel.compose
पैकेज में मौजूद इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)
वर्शन 2.3.1
लाइफ़साइकल वर्शन 2.3.1
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.3.1
रिलीज़ हो गया है. वर्शन 2.3.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट रूल अब अलग-अलग नल वैल्यू वाले फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
वर्शन 2.3.0
वर्शन 2.3.0
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-*:2.3.0
रिलीज़ हो गया है. वर्शन 2.3.0 में ये कमिट शामिल हैं.
2.2.0 के बाद के मुख्य बदलाव
SavedStateHandle
में पार्सल न किए जा सकने वाले क्लास के लिए सहायता उपलब्ध है:SavedStateHandle
अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इससे आपको किसी दी गई कुंजी के लिएsetSavedStateProvider()
को कॉल करने की सुविधा मिलती है. साथ ही, यह एकSavedStateProvider
उपलब्ध कराता है, जिसेsaveState()
पर कॉलबैक मिलेगा. ऐसा तब होगा, जबSavedStateHandle
से उसकी स्थिति सेव करने के लिए कहा जाएगा. पार्सल नहीं की जा सकने वाली क्लास सेव करना लेख पढ़ें.- लाइफ़साइकल के हिसाब से व्यवहार से जुड़ी नीति का उल्लंघन होने पर कार्रवाई करना:
- 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
औरfindViewTreeViewModelStoreOwner
Kotlin एक्सटेंशन, क्रमशः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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
Lint 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
के साथ बंडल किए गए लिंट चेक (खास तौर पर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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट चेक में क्रैश होने की समस्या ठीक की गई. (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
पास करने की अनुमति देता है. इससे उन मामलों में बेहतर तरीके से मदद मिलती है जहां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
पर अपग्रेड करना होगा.lifecycle-runtime-ktx
मेंfindViewTreeLifecycleOwner
Kotlin एक्सटेंशन उपलब्ध है. (aosp/1182361, aosp/1182956) - नया Lint चेक जोड़ा गया है. यह आपको तब चेतावनी देता है, जब आपने Kotlin में नॉन-नल के तौर पर तय किए गए
MutableLiveData
परnull
वैल्यू सेट की हो. यह सुविधा,livedata-core-ktx
याlivedata-ktx
आर्टफ़ैक्ट का इस्तेमाल करने पर उपलब्ध होती है. (aosp/1154723, aosp/1159092) lifecycle-runtime-testing
का नया आर्टफ़ैक्ट उपलब्ध है. यहTestLifecycleOwner
उपलब्ध कराता है, जोLifecycleOwner
लागू करता है. साथ ही, थ्रेड सेफ़ म्यूटेबलLifecycle
उपलब्ध कराता है. (aosp/1242438)
गड़बड़ियां ठीक की गईं
lifecycle-runtime
आर्टफ़ैक्ट का पैकेज नाम अब यूनीक है. (aosp/1187196)
वर्शन 2.2.0
ViewModel-Savedstate वर्शन 2.2.0
5 फ़रवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये कमिट शामिल हैं.
Lifecycle ViewModel SavedState अब अन्य Lifecycle आर्टफ़ैक्ट के साथ एक ही वर्शन शेयर करता है. 2.2.0
का व्यवहार, 1.0.0
के व्यवहार जैसा ही होता है.
वर्शन 2.2.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-*:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये कमिट शामिल हैं.
2.1.0 के बाद के ज़रूरी बदलाव
- लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया
lifecycle-runtime-ktx
आर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए,lifecycle-livedata-ktx
को भी बढ़ाया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें. ViewModelProviders.of()
का इस्तेमाल अब नहीं किया जा सकता:ViewModelProviders.of()
का इस्तेमाल अब नहीं किया जा सकता. Fragment1.2.0
का इस्तेमाल करते समय, नईViewModelProvider(ViewModelStoreOwner)
कंस्ट्रक्टर कोFragment
याFragmentActivity
पास करके, वही फ़ंक्शनैलिटी हासिल की जा सकती है.lifecycle-extensions
आर्टफ़ैक्ट को बंद करना:ViewModelProviders.of()
को बंद करने के साथ-साथ, इस रिलीज़ मेंlifecycle-extensions
में मौजूद आखिरी एपीआई को भी बंद कर दिया गया है. इसलिए, अब इस आर्टफ़ैक्ट को पूरी तरह से बंद माना जाना चाहिए. हमारा सुझाव है कि आपlifecycle-extensions
के बजाय, अपनी ज़रूरत के हिसाब से लाइफ़साइकल आर्टफ़ैक्ट (जैसे,LifecycleService
का इस्तेमाल करने परlifecycle-service
औरProcessLifecycleOwner
का इस्तेमाल करने परlifecycle-process
) का इस्तेमाल करें. ऐसा इसलिए, क्योंकि आने वाले समय मेंlifecycle-extensions
का2.3.0
वर्शन रिलीज़ नहीं किया जाएगा.- Gradle Incremental Annotation Processor: Lifecycle का एनोटेशन प्रोसेसर, डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है.
अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग भाषा में लिखा गया है, तो इसके बजाय
DefautLifecycleObserver
का इस्तेमाल किया जा सकता है. अगर इसे Java 7 प्रोग्रामिंग भाषा में लिखा गया है, तोLifecycleEventObserver
का इस्तेमाल किया जा सकता है.
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
रिलीज़ हो गया है. वर्शन 2.2.0-rc03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
ViewModel
कोViewModelStore
में सेव करने और बाद में डिफ़ॉल्ट फ़ैक्ट्री के साथ क्वेरी करने पर होने वाली गड़बड़ी को ठीक किया गया.Dispatchers.Main.immediate
के इस्तेमाल से जुड़ी समस्या को ठीक किया गया है. साथ ही,launchWhenCreated
और इसी तरह के अन्य तरीकों को लाइफ़साइकल के इवेंट के दौरान सिंक्रोनस तरीके से कॉल किया जा सकता है. (aosp/1156203)
बाहरी योगदान
- बग ठीक करने में योगदान देने के लिए, एंडर्स जर्लबर्ग को धन्यवाद! (aosp/1156203)
- हम Jetbrains के Vsevolod Tolstopyatov को धन्यवाद देते हैं. उन्होंने इनलाइन एक्ज़ीक्यूशन को लागू करने की समीक्षा की.
डिपेंडेंसी में बदलाव
- Lifecycle Extensions अब Fragment
1.2.0-rc03
पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
रिलीज़ हो गया है. वर्शन 2.2.0-rc02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइब्रेरी के ProGuard सेटअप में मौजूद एक बग को ठीक किया गया है. इससे एपीआई 28 या उसके बाद के वर्शन वाले डिवाइसों पर असर पड़ता था. ऐसा तब होता था, जब टारगेट एपीआई 29 से पहले का होता था. (b/142778206)
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
रिलीज़ हो गया है. वर्शन 2.2.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
launchWhenCreated
और इससे जुड़े तरीके, लाइफ़साइकल के तरीके से एक फ़्रेम बाद में चलते थे. ऐसा इसलिए होता था, क्योंकिDispatchers.Main.immediate
के बजायDispatchers.Main
का इस्तेमाल किया जाता था. (aosp/1145596)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1145596)
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
रिलीज़ हो गया है. वर्शन 2.2.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android 10 डिवाइसों पर,
ProcessLifecycleOwner
के क्रम में और गतिविधि केLifecycleOwner
को शुरू और फिर से शुरू करने में, Lifecycle 2.2.0-alpha05 में हुई गड़बड़ी को ठीक किया गया है. (aosp/1128132) - लाइफ़साइकल
2.2.0-alpha05
में हुई रिग्रेशन की समस्या को ठीक किया गया है. इसकी वजह से,lifecycle-process
के2.0.0
या2.1.0
वर्शन का इस्तेमाल करते समयNullPointerException
की समस्या होती थी. (b/141536990)
वर्शन 2.2.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
रिलीज़ हो गया है. वर्शन 2.2.0-alpha05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोरूटीन livedata बिल्डर में रेस कंडीशन की समस्या ठीक की गई. b/140249349
वर्शन 2.2.0-alpha04
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
, औरliveData
के लिए, अबDispatchers.Main
के बजायDispatchers.Main.immediate
का इस्तेमाल किया जाता है. (b/139740492)
बाहरी योगदान
Dispatchers.Main.immediate
पर माइग्रेट करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1106073)
वर्शन 2.2.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
ViewModelStoreOwner
को लागू करने वाले लोग या कंपनियां, अबHasDefaultViewModelProviderFactory
को लागू कर सकती हैं. इससे वे डिफ़ॉल्टViewModelProvider.Factory
उपलब्ध करा सकेंगी. यह ऐक्टिविटी1.1.0-alpha02
, फ़्रैगमेंट1.2.0-alpha02
, और नेविगेशन2.2.0-alpha01
के लिए किया गया है. (aosp/1092370, b/135716331)
एपीआई में हुए बदलाव
ViewModelProviders.of()
का अब इस्तेमाल नहीं किया जा सकता. एक जैसी सुविधा पाने के लिए, नएViewModelProvider(ViewModelStoreOwner)
कंस्ट्रक्टर कोFragment
याFragmentActivity
पास किया जा सकता है. (aosp/1009889)
वर्शन 2.2.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:*:2.2.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
LiveDataScope.initialValue
कोLiveDataScope.latestValue
से बदल दिया गया है. यहliveData
ब्लॉक की मौजूदा वैल्यू को ट्रैक करेगा.liveData
बिल्डर में एक नया ओवरलोड जोड़ा गया है, जोtimeout
पैरामीटर कोDuration
टाइप के तौर पर स्वीकार करता है
वर्शन 2.2.0-alpha01
7 मई, 2019
androidx.lifecycle:*:2.2.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं. इनमें Lifecycle और LiveData के लिए Kotlin coroutines का इस्तेमाल करने की सुविधा शामिल है. इनके बारे में ज़्यादा जानकारी वाले दस्तावेज़ यहां देखे जा सकते हैं.
ViewModel-SavedState वर्शन 1.0.0
वर्शन 1.0.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
रिलीज़ हो गया है. वर्शन 1.0.0 में ये कमिट शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
- नई SavedStateHandle क्लास जोड़ी गई. इससे आपकी
ViewModel
क्लास, सेव किए गए डेटा को ऐक्सेस कर पाती हैं और उसमें योगदान दे पाती हैं. इस ऑब्जेक्ट कोViewModel
क्लास के कंस्ट्रक्टर में पाया जा सकता है. साथ ही, Fragments और AppCompatActivity की ओर से डिफ़ॉल्ट रूप से उपलब्ध कराई गई फ़ैक्ट्रियां,SavedStateHandle
को अपने-आप इंजेक्ट कर देंगी. - AbstractSavedStateViewModelFactory को जोड़ा गया. इसकी मदद से, अपने
ViewModel
के लिए कस्टम फ़ैक्ट्रियां बनाई जा सकती हैं. साथ ही, उन्हेंSavedStateHandle
का ऐक्सेस दिया जा सकता है.
ViewModel-Savedstate वर्शन 1.0.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
रिलीज़ हो गया है. वर्शन 1.0.0-rc03 में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel SavedState अब Lifecycle
2.2.0-rc03
पर निर्भर करता है.
Viewmodel-Savedstate वर्शन 1.0.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- अब लाइफ़साइकल
2.2.0-rc02
पर निर्भर करता है.
ViewModel-SavedState वर्शन 1.0.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
को 1.0.0-beta01
में किए गए बदलावों के बिना रिलीज़ किया गया है. वर्शन 1.0.0-rc01 में ये कमिट शामिल हैं.
ViewModel-Savedstate वर्शन 1.0.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से
Activity.onActivityResult()
में पहली बार SavedState ViewModel को ऐक्सेस करने पर,IllegalStateException
मिलता था. (b/139093676) AbstractSavedStateViewModelFactory
का इस्तेमाल करते समय,IllegalStateException
से जुड़ी समस्या को ठीक किया गया है. (b/141225984)
ViewModel-SavedState वर्शन 1.0.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SavedStateViewModelFactory
अबAbstractSavedStateViewModelFactory
को एक्सटेंड नहीं करता है. साथ ही,SavedStateHandle
सिर्फ़ उन ViewModels के लिए बनाया जाता है जिन्होंने इसके लिए अनुरोध किया है (aosp/1113593)
ViewModel-SavedState वर्शन 1.0.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नुकसान पहुंचा सकने वाले बदलाव
lifecycle-viewmodel-savedstate
अबfragment
पर निर्भर नहीं है. साथ ही, इससे जुड़ेSavedStateViewModelFactory(Fragment)
औरSavedStateViewModelFactory(FragmentActivity)
कंस्ट्रक्टर हटा दिए गए हैं. इसके बजाय, अबSavedStateViewModelFactory
, ऐक्टिविटी1.1.0-alpha02
, फ़्रैगमेंट1.2.0-alpha02
, और नेविगेशन2.2.0-alpha01
के लिए डिफ़ॉल्ट फ़ैक्ट्री है. (b/135716331)
ViewModel-SavedState वर्शन 1.0.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- डिफ़ॉल्ट वैल्यू स्वीकार करने वाले
SavedStateHandle.getLiveData()
ओवरलोड को जोड़ा गया.
एपीआई में हुए बदलाव
SavedStateVMFactory
का नाम बदलकरSavedStateViewModelFactory
कर दिया गया है.AbstractSavedStateVMFactory
का नाम बदलकरAbstractSavedStateViewModelFactory
कर दिया गया है.
ViewModel-Savedstate वर्शन 1.0.0-alpha01
13 मार्च, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
रिलीज़ हो गया है. इस शुरुआती रिलीज़ के लिए, पूरा कमिट लॉग यहां देखा जा सकता है.
नई सुविधाएं
- अब
ViewModels
, savedstate में योगदान कर सकता है. इसके लिए, आपको हाल ही में लॉन्च की गई viewmodel की फ़ैक्ट्रीSavedStateVMFactory
का इस्तेमाल करना होगा. साथ ही, आपके ViewModel में एक कंस्ट्रक्टर होना चाहिए, जोSavedStateHandle
object को पैरामीटर के तौर पर स्वीकार करता हो.
वर्शन 2.1.0
2.0.0 के बाद हुए अहम बदलाव
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserver
जोड़ा गया. यह छिपी हुईGenericLifecycleObserver
क्लास के बजाय एक सार्वजनिक एपीआई है. LiveData.observe
औरTransformations.*
तरीकों के लिए ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChanged
को जोड़ा गया है. यह एक नया LiveData ऑब्जेक्ट बनाता है, जो तब तक वैल्यू नहीं भेजता, जब तक सोर्सLiveData
की वैल्यू में बदलाव नहीं हो जाता.- एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScope
जोड़कर, ViewModels में कोरूटीन की सुविधा जोड़ी गई.
वर्शन 2.1.0
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.1.0
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
वर्शन 2.1.0-rc01
2 जुलाई, 2019
androidx.lifecycle:*:2.1.0-rc01
को androidx.lifecycle:*:2.1.0-beta01
में किए गए बदलावों के बिना रिलीज़ किया गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
वर्शन 2.1.0-beta01
7 मई, 2019
androidx.lifecycle:*:2.1.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- लाइफ़साइकल को बीटा वर्शन में अपग्रेड किया गया है: पिछले ऐल्फ़ा वर्शन में पेश किए गए एपीआई, जैसे कि
liveData
ट्रांसफ़ॉर्मेशन और ऑब्ज़र्वेशन के लिए एक्सटेंशन फ़ंक्शन,ViewModel
प्रॉपर्टी डेलिगेशन और अन्य के साथ इनिशियलाइज़ेशन को स्थिर कर दिया गया है और इनमें कोई बदलाव नहीं किया जाएगा.
वर्शन 2.1.0-alpha04
3 अप्रैल, 2019
androidx.lifecycle:*:2.1.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
- बदलाव:
by viewModels()
औरby activityViewModels()
के पीछे काम करने वाले एपीआई को बदल दिया गया है. अब यह सिर्फ़ViewModelStoreOwner
के बजाय सीधे तौर परViewModelStore
के साथ काम करेगा. (aosp/932932)
वर्शन 2.1.0-alpha03
13 मार्च, 2019
androidx.lifecycle:*:2.1.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल सभी कमिट की पूरी सूची यहां देखी जा सकती है.
एपीआई में हुए बदलाव
ViewModelProvider.KeyedFactory
को हटा दिया गया है. Kotlinby viewmodels {}
में प्रॉपर्टी डेलिगेशन की नई सुविधाओं के साथ,ViewModelProvider.Factory
के अलावा दूसरा इंटरफ़ेस ठीक से कंपोज़ नहीं हुआ. (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 से पहले के वर्शन
लाइफ़साइकल के 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.0
android.arch.lifecycle:viewmodel:1.1.0
एपीआई में हुए बदलाव
LifecycleActivity
औरLifecycleFragment
के इस्तेमाल पर रोक लगा दी गई है. इन्हें अब हटा दिया गया है. कृपयाFragmentActivity
,AppCompatActivity
या सहायताFragment
का इस्तेमाल करें.@NonNull
एनोटेशन कोViewModelProviders
औरViewModelStores
में जोड़ा गया हैViewModelProviders
कंस्ट्रक्टर अब काम नहीं करता - कृपया इसके स्टैटिक तरीकों का सीधे तौर पर इस्तेमाल करेंViewModelProviders.DefaultFactory
के इस्तेमाल पर रोक लगा दी गई है. कृपयाViewModelProvider.AndroidViewModelFactory
का इस्तेमाल करें- स्टैटिक
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
तरीके को जोड़ा गया है, ताकिViewModel
औरAndroidViewModel
इंस्टेंस बनाने के लिए, स्टैटिकFactory
को वापस पाया जा सके.