लाइफ़साइकल
इस टेबल में, androidx.lifecycle
ग्रुप के सभी आर्टफ़ैक्ट की सूची होती है.
सह-प्रॉडक्ट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
lifecycle-* | 2.8.7 | - | - | 2.9.0-alpha08 |
lifecycle-viewmodel-compose | 2.8.7 | - | - | 2.9.0-alpha08 |
डिपेंडेंसी का एलान करना
लाइफ़साइकल पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.7" 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" // 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.8.7" 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") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.8.7" 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.8.7" 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 को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 2.9
वर्शन 2.9.0-alpha08
11 दिसंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
रिलीज़ हो गया है. वर्शन 2.9.0-alpha08 में ये कमिट शामिल हैं.
नई सुविधाएं
- सिस्टम प्रोसेस के बंद होने की नकल करने के लिए
ViewModelScenario.recreate
जोड़ें. इससे, टेस्ट में शामिलViewModel
और उससे जुड़े सभी कॉम्पोनेंट फिर से बन जाएंगे. (Id6a69, b/381063087) LifecycleOwner
औरViewModelStoreOwner
इंस्टेंस, उनकेfindViewTree
एपीआई की मदद से वापस लाए जा सकते हैं. अब इन्हें किसी व्यू के अलग-अलग पैरंट, जैसे किViewOverlay
की मदद से हल किया जा सकता है. अलग-अलग व्यू के पैरंट के बारे में ज़्यादा जानकारी के लिए, कोर के रिलीज़ नोट याViewTree.setViewTreeDisjointParent
में दस्तावेज़ देखें. (I800f4)
एपीआई में हुए बदलाव
- नाम और पैकेज के संगठन को
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744) के मुताबिक बनाएं
गड़बड़ियां ठीक की गईं
- यह लाइब्रेरी अब JSpecify nullness एनोटेशन का इस्तेमाल करती है, जो टाइप-इस्तेमाल के लिए हैं. Kotlin डेवलपर को सही तरीके से इस्तेमाल करने के लिए, कंपाइलर के इन आर्ग्युमेंट का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(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 मल्टीप्लैटफ़ॉर्म के साथ काम करना
- लाइफ़साइकल
ViewModel SavedState
अब KMP के साथ काम करता है. इससे, सामान्य कोड मेंSavedStateHandle
का इस्तेमाल किया जा सकता है. (Ib6394, b/334076622)
KotlinX सीरियलाइज़ेशन के लिए सहायता
SavedState
1.3.0-alpha05
में जोड़ी गई KotlinX सीरियलाइज़ेशन की मदद से, हमने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
से: लाइफ़साइकल रनटाइम Compose अब Compose रनटाइम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
को सामान्य सोर्स सेट (KMP) में ले जाएं. योगदान देने के लिए, JetBrains के Ivan Matkov को धन्यवाद. (8cd5d03)- लाइफ़साइकल
2.8.5
से: SavedStateHandle.saveable` एक्सटेंशन डेलिगेट अब शून्य वैल्यू के साथ काम करता है. योगदान देने के लिए, रोमन कालुकीविच को धन्यवाद. (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 आर्टफ़ैक्ट उपलब्ध है. इसमें ViewModels की अलग से जांच करने के लिए,ViewModelScenario
क्लास उपलब्ध है. यह क्लासonCleared
(सभी प्लैटफ़ॉर्म) औरSavedStateHandle
(सिर्फ़ Android) के साथ काम करती है. (337f68d, c9b3409, 9799a95c, b/264602919) ViewModelProvider
की मदद सेViewModel
बनाना अब थ्रेड सेफ़ है;@MainThread
एनोटेशन हटा दिए गए हैं. (Ifd978, b/237006831)
एपीआई में हुए बदलाव
- बिना नाम वाले
CreationExtras.Key
ऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए,CreationExtras.Key()
फ़ैक्ट्री फ़ंक्शन जोड़ें. (I970ee) CreationExtras
में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससेCreationExtras
के साथin
,+=
, और+
का इस्तेमाल किया जा सकता है. (Ib4353)CreationExtras
अबequals
,hashCode
, औरtoString
तरीके लागू करता है. (Ib4353)NewInstanceFactory
अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है. (d3d0892)- Kotlin लैंग्वेज के वर्शन 2.0 (I39df2) में, ऐप्लिकेशन को सुरक्षित तरीके से एक्सपोज़ करने के लिए, इनलाइन एक्सटेंशन प्रॉपर्टी
गड़बड़ियां ठीक की गईं
- नए प्लैटफ़ॉर्म एपीआई के ऐक्सेस की मैन्युअल रूप से जानकारी देने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप होता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप होता है. जिन क्लाइंट ने AGP का इस्तेमाल नहीं किया है उन्हें D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (If6b4c, b/345472586)
वर्शन 2.8
वर्शन 2.8.7
30 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.8.7
रिलीज़ हो गया है. वर्शन 2.8.7 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
androidx.compose.ui.platform.LocalLifecycleOwner
अब सामान्य सोर्स सेट (KMP) में उपलब्ध है. (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
Lint की गड़बड़ी की वजह से, स्मार्ट कास्ट के लिए बेहतर सहायता मिलती है. इससे गलत पहचान की समस्या से बचा जा सकता है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल रनटाइम Compose अब Compose रनटाइम
1.7.1
पर निर्भर करता है
वर्शन 2.8.5
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.8.5
रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोड को छिपाने की सुविधा चालू करने के लिए,
androidx.lifecycle.ReportFragment
ProGuard के नियमों को अपडेट करें . (ff898e1)
बाहरी योगदान
SavedStateHandle.saveable
एक्सटेंशन डेलिगेट अब ऐसी वैल्यू के साथ काम करता है जिनमें वैल्यू न होने की स्थिति भी शामिल हो सकती है. योगदान देने के लिए, रोमन कालुकीविच को धन्यवाद. (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
गड़बड़ियां ठीक की गईं - अब Compose के किसी भी वर्शन के साथ Lifecycle 2.8.2 का इस्तेमाल किया जा सकता है. इसके लिए, आपको कोई दूसरा तरीका अपनाने की ज़रूरत नहीं है. (aosp/3105647, b/336842920) compileOnly
लाइफ़साइकल डिपेंडेंसी के पिछले वर्शन को 2.8 और उसके बाद के वर्शन के साथ मिक्स करने पर,ViewModelProvider
अब क्रैश नहीं होगा. साथ ही, 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
से नीचे गिरने के बाद भी होने वाले क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. उदाहरण के लिए, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को हैंडल करने से बचने के लिए, इसका इस्तेमाल नेविगेशन कंपोज के साथ किया जा सकता है:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इसकी मदद से, अपना डिस्पैचर औरSupervisorJob()
इंजेक्ट किया जा सकता है. इसके अलावा,runTest
में मौजूदbackgroundScope
का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
ViewModel
को Kotlin में फिर से लिखा गया है और अब यहCloseable
के बजायAutoClosable
का इस्तेमाल करता है. अब इसमेंkey
के साथAutoCloseable
ऑब्जेक्ट जोड़े जा सकते हैं. इससे, उन्हेंgetCloseable()
के ज़रिए वापस पाया जा सकता है.अब बिना पासकोड के
LifecycleStartEffect
औरLifecycleResumeEffect
को कॉल करने पर गड़बड़ी का मैसेज दिखता है. यह वही तरीका है जोDisposableEffect
एपीआई में इस्तेमाल किया जाता है.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
की जगह अबLiveData.toPublisher(lifecycleOwner)
का इस्तेमाल किया जाता है.lifecycle-livedata-core-ktx
Kotlin एक्सटेंशन को अबlifecycle-livedata-core
मॉड्यूल में ले जाया गया है.NullSafeMutableLiveData
को फिर से तैयार किया गया है, ताकि फ़ॉल्स पॉज़िटिव की समस्या से बचा जा सके.
लाइफ़साइकल Kotlin के मल्टीप्लैटफ़ॉर्म वर्शन के साथ काम करने की सुविधा
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 के मल्टीप्लैटफ़ॉर्म के साथ काम करने की सुविधा
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं.
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद ऐसे तरीकों के लिए, अब एक ऐसा तरीका उपलब्ध है जो kotlin.reflect.KClass<T>
लेता है. जैसे, java.lang.Class<T>
लेना.
Android पर बाइनरी के साथ काम करने की सुविधा को बरकरार रखा गया है. हालांकि, Android API के प्लैटफ़ॉर्म की तुलना सामान्य API के प्लैटफ़ॉर्म से करने पर, कुछ अहम बदलाव दिखते हैं:
ViewModelProvider
इंस्टेंस बनाने के लिए, अब सीधे तौर पर उसके कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों का इस्तेमाल किया जाता है.ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
ViewModelProvider.Factory
से एक्सटेंड करें औरcreate
तरीके का इस्तेमाल करें. यह तरीकाCreationExtras
लेता है याviewModelFactory
Kotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
- JVM प्लैटफ़ॉर्म के अलावा किसी दूसरे प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
दिखेगा. अगर कोई कस्टम फ़ैक्ट्री उपलब्ध नहीं कराई जाती है, तो JVM प्लैटफ़ॉर्म पर, बिना-आर्ग्युमेंट वाले 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 डेस्कटॉप पर मुख्य थ्रेड की जांच को बेहतर बनाने के लिए, विक्टर क्रॉप का धन्यवाद. (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 आर्टफ़ैक्ट शिप किया जाता है. इस बदलाव को ध्यान में रखते हुए, ComposableviewModel
का तरीका अब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 मल्टीप्लैटफ़ॉर्म के साथ काम करना
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं. (b/214568825)
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद ऐसे तरीकों के लिए, अब एक ऐसा तरीका उपलब्ध है जो kotlin.reflect.KClass<T>
लेता है. जैसे, java.lang.Class<T>
लेना.
Android पर बाइनरी के साथ काम करने की सुविधा को बरकरार रखा गया है. हालांकि, Android API के प्लैटफ़ॉर्म की तुलना सामान्य API के प्लैटफ़ॉर्म से करने पर, कुछ अहम बदलाव दिखते हैं:
ViewModelProvider
इंस्टेंस बनाने के लिए, अब सीधे तौर पर उसके कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों का इस्तेमाल किया जाता है.ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
ViewModelProvider.Factory
से एक्सटेंड करें औरcreate
तरीके का इस्तेमाल करें. यह तरीकाCreationExtras
लेता है याviewModelFactory
Kotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
- JVM प्लैटफ़ॉर्म के अलावा किसी दूसरे प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
दिखेगा. अगर कोई कस्टम फ़ैक्ट्री उपलब्ध नहीं कराई जाती है, तो JVM प्लैटफ़ॉर्म पर, बिना-आर्ग्युमेंट वाले 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 यूज़र इंटरफ़ेस (यूआई) से lifecycle-runtime-compose पर ले जाया गया है, ताकि Compose पर आधारित हेल्पर एपीआई का इस्तेमाल, Compose यूज़र इंटरफ़ेस (यूआई) के बाहर किया जा सके. योगदान देने के लिए, जेक व्हार्टन को धन्यवाद. (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
से नीचे आने के बाद भी होने वाले क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. उदाहरण के लिए, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को मैनेज करने से बचने के लिए, इसका इस्तेमाल नेविगेशन कंपोज़ के साथ किया जा सकता है: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 मल्टीप्लैटफ़ॉर्म के साथ काम करना
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)
बाहरी योगदान
- Lifecycle को Kotlin Multiplatform पर ले जाने में मदद करने के लिए, Jetbrains के Ivan Matkov का धन्यवाद. (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
सेट है, तो रिटर्न किए गएLiveData
केvalue
को पॉप्युलेट करने के लिए,map
/switchMap
फ़ंक्शन को तुरंत कॉल किया जाएगा. इससे यह पक्का होता है कि शुरुआती वैल्यू,observeAsState()
के साथ इस्तेमाल करने पर, पहली कॉम्पोज़िशन के हिस्से के तौर पर सेट की जाएगी. हालांकि, इससे निगरानी के व्यवहार में कोई बदलाव नहीं होता. सोर्सLiveData
से अपडेट की गई वैल्यू, तब भी सिर्फ़ तब लागू होंगी, जबLiveData
को निगरानी में रखा जाएगा.- इस रिलीज़ में, एक समस्या को ठीक किया गया है. इस समस्या की वजह से, प्रोसेस के बंद होने और फिर से शुरू होने के बाद,
SavedStateHandle
कस्टमParcelable
क्लास को ठीक से वापस नहीं ला पाता था. Android फ़्रेमवर्क में टाइप की जानकारी मौजूद नहीं होती. इसलिए, कस्टम Parcelables के कलेक्शन के लिए ज़्यादा काम करना पड़ता है. जैसे, मैन्युअल तरीके से सही टाइप का कलेक्शन बनाना.get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब खास तौर पर इस सीमा के बारे में बताया गया है. LifecycleObserver
से जुड़े, 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 फ़्रेमवर्क में टाइप की जानकारी मौजूद नहीं होती. इसलिए, कस्टम Parcelables के कलेक्शन के लिए ज़्यादा काम करना पड़ता है. जैसे, मैन्युअल तरीके से सही टाइप का कलेक्शन बनाना.get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब खास तौर पर इस सीमा के बारे में बताया गया है. (I0b55a)
वर्शन 2.7.0-rc01
15 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
रिलीज़ हो गया है. 2.7.0-rc01 वर्शन में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
LifecycleOwner
में बदलाव होने पर,LifecycleStartEffect
औरLifecycleResumeEffect
अब इफ़ेक्ट ब्लॉक को सही तरीके से हटाते और फिर से बनाते हैं. (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
में अब एक नई Lint जांच शामिल है, ताकि कोरूटीन के अंदरcurrentState
फ़ील्ड का इस्तेमाल करके,TestLifecycleOwner
केLifecycle.State
को सेट करने से बचा जा सके. Lint की जांच करने पर, अब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()
शामिल है. इससे उपयोगकर्ताओं कोTestLifecycleOwner
का इस्तेमाल,runTest
से मिलने वाले कोरूटीन में करने का विकल्प मिलता है. (I329de, b/259344129)
एपीआई में हुए बदलाव
lifecycle-livedata-ktx
मॉड्यूल की सभी फ़ाइलों को मुख्यlifecycle-livedata
मॉड्यूल में ले जाया गया है. (I10c6f, b/274800183)
व्यवहार में बदलाव
- अगर पिछले
LiveData
में कोई वैल्यू सेट की गई है, तोLiveData.map()
औरLiveData.switchMap()
एक्सटेंशन, अब दिखाए गएLiveData
काvalue
सेट करेगा. इससे यह पक्का किया जा सकेगा कि Jetpack Compose में, नतीजे के तौर पर मिले LiveData का इस्तेमाल करते समय, शुरुआती कॉम्पोज़िशन में सही स्थिति हो. (I91d2b, b/269479952) - अगर
ViewModel
को पहले हीonCleared()
पर कॉल मिल चुका है, तोViewModel
काaddCloseable()
अब तुरंतCloseable
को बंद कर देता है. (I4712e, b/280294730)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.6.2
से: एक समस्या को ठीक किया गया है. इसमें, प्रोसेस के बंद होने के बादSavedStateHandle
को सही तरीके से वापस नहीं लाया जा सकता था. ऐसा तब होता था, जब स्टेटस को वापस लाया जाता था,save()
को पैरंटSavedStateRegistry
में स्टेटस को सेव किए बिना कॉल किया जाता था, और फिर स्टेटस को फिर से वापस लाया जाता था. इससे,rememberSaveable
और नेविगेशन कंपोज़ केNavHost
के बीच इंटरैक्शन ठीक हो जाता है. (aosp/2729289)
वर्शन 2.7.0-alpha01
26 जुलाई, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
रिलीज़ हो गया है. 2.7.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Lifecycle.State
को अबLifecycle.currentStateFlow
की मदद से Compose-observable बनाया गया है. इससेStateFlow
मिलता है, जहांvalue
मौजूदाLifecycle.State
है. (Ib212d, b/209684871)Lifecycle.Event
को अबLifecycle.asFlow().
के साथFlow
के तौर पर देखा जा सकता है (If2c0f, b/176311030)LifecycleResumeEffect
एपीआई कोLifecycle.Event.ON_RESUME
औरLifecycle.Event.ON_PAUSE
इवेंट कॉलबैक, दोनों के आधार पर ComposeSideEffect
चलाने के लिए जोड़ा गया है. (I60386, b/235529345)LifecycleStartEffect
एपीआई कोLifecycle.Event.ON_START
औरLifecycle.Event.ON_STOP
इवेंट कॉलबैक के आधार पर, ComposeSideEffect
चलाने के लिए जोड़ा गया है. (I5a8d1, b/235529345)Lifecycle.Event
के आधार पर ComposeSideEffect
चलाने के लिए,LifecycleEventEffect
एपीआई जोड़ा गया है. (Ic9794, b/235529345)Lifecycle.collectAsState()
एक्सटेंशन जोड़ा गया है, ताकिLifecycle.State
को सीधे तौर पर 'लिखें'State
के तौर पर दिखाया जा सके. यहlifecycle.currentStateFlow.collectAsState()
के बराबर है और इसका विकल्प छोटा है. (I11015, b/235529345)
गड़बड़ियां ठीक की गईं
- अगर पिछले
LiveData
में कोई वैल्यू सेट की गई है, तोLiveData.distinctUntilChanged()
एक्सटेंशन अब दिखाए गएLiveData
कीvalue
सेट करता है. इससे, निगरानी के तरीके में कोई बदलाव नहीं होता - सोर्सLiveData
से अपडेट की गई वैल्यू तब ही लागू होंगी, जबdistinctUntilChanged()
से मिलीLiveData
को निगरानी करना शुरू किया जाएगा. (Ib482f) LifecycleObserver
से जुड़े, ProGuard के रखरखाव के नियम हटा दिए गए हैं. इसका मतलब है कि प्रोगर्ड किए गए ऐसे कोड को, रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने के लिए, अपने इस्तेमाल के उदाहरण के लिए, अपने हिसाब से बनाए गए नियम देने होंगे. (Ia12fd)
वर्शन 2.6
वर्शन 2.6.2
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.6.2
रिलीज़ हो गया है. 2.6.2 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें, प्रोसेस के बंद होने के बाद
SavedStateHandle
को सही तरीके से वापस नहीं लाया जा सकता था. ऐसा तब होता था, जब स्टेटस को वापस लाया जाता था,save()
को पैरंटSavedStateRegistry
में स्टेटस को सेव किए बिना कॉल किया जाता था, और फिर स्टेटस को फिर से वापस लाया जाता था. इससे,rememberSaveable
और नेविगेशन कंपोज़ के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()
में वैल्यू के तौर पर null को स्वीकार करना है, तो आपकोObserver
को वैल्यू के तौर पर null को स्वीकार करने वाले टाइप के साथ इंस्टैंशिएट करना होगा. - इन क्लास को भी Kotlin में बदल दिया गया है, लेकिन ये सोर्स के साथ काम करती रहेंगी:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
वर्शन 2.6.0-rc01
22 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर पिछले
LiveData
में कोई वैल्यू सेट की गई है, तोLiveData.distinctUntilChanged()
एक्सटेंशन अब रिटर्न किए गएLiveData
कीvalue
सेट करता है. इससे, निगरानी के तरीके में कोई बदलाव नहीं होता - सोर्सLiveData
से अपडेट की गई वैल्यू तब ही लागू होंगी, जबdistinctUntilChanged()
से मिलीLiveData
को निगरानी करना शुरू किया जाएगा. (Ib482f)
वर्शन 2.6.0-beta01
8 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
LifecycleOwner
अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है - अब उन्हें पिछलेgetLifecycle()
फ़ंक्शन को लागू करने के बजाय,lifecycle
प्रॉपर्टी को बदलना होगा. (I75b4b, b/240298691)ViewModelStoreOwner
अब Kotlin में है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है - अब उन्हें पिछलेgetViewModelStore()
फ़ंक्शन को लागू करने के बजाय,viewModelStore
प्रॉपर्टी को बदलना होगा. (I86409, b/240298691)LifecycleOwner
पर मौजूद Kotlin एक्सटेंशन, जोlifecycleScope
फ़ील्ड उपलब्ध कराता है उसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (I41d78, b/240298691)Lifecycle
पर मौजूद Kotlin एक्सटेंशन, जोcoroutineScope
फ़ील्ड उपलब्ध कराता है उसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (Iabb91, b/240298691)
वर्शन 2.6.0-alpha05
25 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
रिलीज़ हो गया है. 2.6.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
Transformations
अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर परTransformations.map
जैसे सिंटैक्स का इस्तेमाल कर रही थीं - Kotlin कोड में अब Kotlin एक्सटेंशन के उस सिंटैक्स का इस्तेमाल किया जाना चाहिए जो पहले सिर्फ़lifecycle-livedata-ktx
का इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय,androidx.arch.core.util.Function
वाले तरीके का इस्तेमाल करने वाले इन तरीकों के वर्शन का इस्तेमाल नहीं किया जा सकता. इनकी जगह, KotlinFunction1
वाले वर्शन का इस्तेमाल किया जाता है. इस बदलाव से, बाइनरी के साथ काम करने की सुविधा बनी रहती है. (I8e14f)ViewTreeViewModelStoreOwner
अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए,androidx.lifecycle.setViewTreeViewModelStoreOwner
औरandroidx.lifecycle.findViewTreeViewModelStoreOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे इंपोर्ट और इस्तेमाल करना होगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, सोर्स के साथ काम करता रहता है. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
इंटरफ़ेस को अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें मिलते-जुलते पिछले फ़ंक्शन लागू करने के बजाय,defaultViewModelProviderFactory
औरdefaultViewModelCreationExtras
प्रॉपर्टी को बदलना होगा. (Iaed9c, b/240298691)Observer
अब Kotlin में लिखा गया है. इसकाonChanged()
तरीका, अब अपने पैरामीटर के लिएvalue
नाम का इस्तेमाल करता है. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
को अब Kotlin में लिखा गया है (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
वर्शन 2.6.0-alpha04
11 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
रिलीज़ हो गया है. 2.6.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
LiveData
में अब एक नईisInitialized
प्रॉपर्टी शामिल है. इससे पता चलता है किLiveData
पर साफ़ तौर पर कोई वैल्यू सेट की गई है या नहीं. इससे,liveData.value
कीnull
वैल्यू के बीच अंतर किया जा सकता है, क्योंकि कोई वैल्यू कभी सेट नहीं की गई है या साफ़ तौर परnull
वैल्यू सेट की गई है. (Ibd018)
एपीआई में हुए बदलाव
lifecycle-runtime-compose
केcollectAsStateWithLifecycle()
एपीआई, अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)Lifecycle.launchWhenX
औरLifecycle.whenX
के तरीकों का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए किया गया है, क्योंकि कुछ मामलों में डिस्पैचर को रोकने से संसाधनों की बर्बादी हो सकती है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. (Iafc54, b/248302832)
Kotlin कन्वर्ज़न
ViewTreeLifecycleOwner
अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए, अब आपको सीधेandroidx.lifecycle.setViewTreeLifecycleOwner
औरandroidx.lifecycle.findViewTreeLifecycleOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को इंपोर्ट और इस्तेमाल करना होगा. यहlifecycle-runtime-ktx
में मौजूद Kotlin एक्सटेंशन की जगह लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, सोर्स के साथ काम करता रहता है. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
अब Kotlin में लिखा गया है.lifecycle-reactivestreams-ktx
में पहले मौजूद Kotlin एक्सटेंशन,lifecycle-reactivestreams
मॉड्यूल में ले जा दिए गए हैं. साथ ही, Kotlin में लिखे गए कोड के लिए, ये मुख्य प्लैटफ़ॉर्म बन गए हैं. अगर Kotlin एक्सटेंशन के तरीके वाले एपीआई का पहले से इस्तेमाल नहीं किया जा रहा था, तो Kotlin में लिखे गए कोड के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
, औरViewModelStore
को अब Kotlin में लिखा गया है (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
गड़बड़ियां ठीक की गईं
- गलत क्लास टाइप के साथ
get()
को कॉल करने पर,SavedStateHandle
अबClassCastException
के साथ क्रैश नहीं होता. (I6ae7c)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
रिलीज़ हो गया है. 2.6.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल के अलग-अलग मॉड्यूल के बीच की पाबंदियों के काम न करने से जुड़ी समस्या को ठीक किया गया. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
की वजह से होने वाली गड़बड़ियों में अब गड़बड़ी के बारे में ज़्यादा मददगार मैसेज शामिल हैं. इनसे डेवलपर को उस कॉम्पोनेंट के बारे में पता चलता है जिसकी वजह से गड़बड़ी हुई है. (Idf4b2, b/244910446)
वर्शन 2.6.0-alpha02
7 सितंबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
रिलीज़ हो गया है. 2.6.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)
गड़बड़ियां ठीक की गईं
Lifecycle
आर्टफ़ैक्ट में अब सीमाएं शामिल हैं. इनसे यह पक्का होता है कि एक-दूसरे पर निर्भर सभी लाइफ़साइकल आर्टफ़ैक्ट एक ही वर्शन का इस्तेमाल करते हैं. साथ ही, किसी एक आर्टफ़ैक्ट के अपग्रेड होने पर, अन्य आर्टफ़ैक्ट अपने-आप अपग्रेड हो जाते हैं. 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 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
collectAsStateWithLifecycle
केStateFlow
औरFlow
पर एक नया एक्सटेंशन जोड़ा गया है. यह फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, अपनी नई वैल्यू को 'लिखने की स्थिति' के तौर पर दिखाता है. फ़्लो इकट्ठा किया जाता है और नया उत्सर्जन, स्टेट की वैल्यू पर सेट किया जाता है. ऐसा तब होता है, जब लाइफ़साइकल कम से कम किसीLifecycle.State
में हो. जब लाइफ़साइकलLifecycle.State
से कम हो जाता है, तो फ़्लो कलेक्शन बंद हो जाता है और स्टेटस की वैल्यू अपडेट नहीं होती. (I1856e, b/230557927)
वर्शन 2.5
वर्शन 2.5.1
27 जुलाई, 2022
androidx.lifecycle:lifecycle-*:2.5.1
रिलीज़ हो गया है. 2.5.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
Lifecycle
2.4 और उसके बाद के वर्शन के साथ, स्टेटफ़ुलAndroidViewModelFactory
कन्स्ट्रक्टर का इस्तेमाल करने पर,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
:create(Class<T>, CreationExtras)
के नए ओवरलोड की मदद से,CreationExtras
के तौर पर हरViewModelProvider.Factory
सबक्लास को दिए जाते हैं. ऐक्टिविटी1.5.0
और फ़्रैगमेंट1.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 इंटिग्रेशन -
lifecycle-viewmodel-compose
आर्टफ़ैक्ट में अबSavedStateHandle.saveable
में नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से,rememberSaveable
की तरह काम करने वालेSavedStateHandle
को `ViewModel में शामिल किया जा सकता है.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() } }
इसके बाद,
viewModelScope
के लाइफ़टाइम को बनाए रखते हुए,ViewModel
कन्स्ट्रक्टर में इसका इस्तेमाल किया जा सकता है:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
सेDESTROYED
पर ले जाने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
में कोई ऑब्ज़र्वर अटैच हो.LifecycleRegistry
अबDESTROYED
स्टेटस पर पहुंचने पर, अपने ऑब्ज़र्वर हटा देगा.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
रिलीज़ हो गया है. 2.5.0-rc02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- compileOnly लाइफ़साइकल डिपेंडेंसी के पिछले वर्शन को 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 में, लाइफ़साइकल 2.3 और लाइफ़साइकल के नए वर्शन के साथ काम करने से जुड़ी समस्या को ठीक किया गया. (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
उपलब्ध कराता है. इसकी मदद से, किसी खासViewModel
क्लास को मैनेज करने के लिए,CreationExtras
को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके, lambda जोड़ा जा सकता है. (If58fc, b/216687549)lifecycle-viewmodel-compose
अब एकviewModel()
एपीआई उपलब्ध कराता है, जोViewModel
इंस्टेंस बनाने के लिए, कस्टमViewModelProvider.Factory
बनाने की ज़रूरत के बिना, एक lambda फ़ैक्ट्री लेता है. (I97fbb, b/216688927)
एपीआई में हुए बदलाव
- अब
lifecycle-viewmodel-compose
की मदद से,CreationExtras
के साथViewModel
बनाया जा सकता है. (I08887, b/216688927)
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
सेDESTROYED
पर ले जाने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
में कोई ऑब्ज़र्वर अटैच हो. (I7c390, b/177924329)LifecycleRegistry
अबDESTROYED
स्टेटस पर पहुंचने पर, अपने ऑब्ज़र्वर हटा देगा. (I4f8dd, b/142925860)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
रिलीज़ हो गया है. 2.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle
औरSavedStateViewModelFactory
को Kotlin में बदल दिया गया है. इससे, दोनों क्लास में मौजूद सामान्य वैल्यू के लिए, वैल्यू न होने की स्थिति को बेहतर बनाया गया है. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
फ़ंक्शन पैरामीटर का आउटपुट अब शून्य हो सकता है. (I40396, b/132923666)LiveData
-ktx एक्सटेंशन को अब@CheckResult
के साथ एनोटेट किया गया है, ताकि इन फ़ंक्शन को कॉल करते समय नतीजे का इस्तेमाल किया जा सके. (Ia0f05, b/207325134)
व्यवहार में बदलाव
SavedStateHandle
अब, तय की गई कुंजी के लिए कोई वैल्यू मौजूद न होने पर, डिफ़ॉल्ट वैल्यू को सही तरीके से सेव करता है. (I1c6ce, b/178510877)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.4.1
से:lifecycle-process
को Startup 1.1.1 पर निर्भर करने के लिए अपडेट किया गया है. इससे यह पक्का किया जा सकेगा किProcessLifecycleInitializer
कोStartupException
दिखाने से रोकने वाले सुधार, डिफ़ॉल्ट रूप से उपलब्ध हों. (Ib01df, b/216490724) - कस्टम
AndroidViewModel
क्लास में पैरामीटर गलत क्रम में होने औरViewModel
बनाने की कोशिश करने पर, अब गड़बड़ी का बेहतर मैसेज दिखेगा. (I340f7, b/177667711) - अब ऐप्लिकेशन सेट किए बिना,
AndroidViewModelFactory
का इस्तेमाल करकेCreationExtras
के ज़रिए व्यू मॉडल बनाया जा सकता है. (I6ebef, b/217271656)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
रिलीज़ हो गया है. 2.5.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
ViewModel CreationExtras
इस रिलीज़ के साथ, हम ViewModel
को बनाने के तरीके में बदलाव करने की तैयारी कर रहे हैं. हम ViewModelProvider.Factory
के सबक्लास के सख्त सेट के बजाय, स्टेटलेस फ़ैक्ट्री की दुनिया में जा रहे हैं. ये फ़ैक्ट्री, CreationExtras
नाम के नए कॉन्सेप्ट पर निर्भर करती हैं. हर सबक्लास में अतिरिक्त फ़ंक्शन जोड़े जाते हैं. जैसे, AndroidViewModelFactory
की मदद से Application
कंस्ट्रक्टर पैरामीटर जोड़ना, SavedStateViewModelFactory
और AbstractSavedStateViewModelFactory
की मदद से SavedStateHandle
कंस्ट्रक्टर पैरामीटर जोड़ना वगैरह. (Ia7343, b/188691010, b/188541057)
इस बदलाव के बाद, ViewModelProvider
अब ViewModelProvider.Factory
के पिछले create(Class<T>)
तरीके में सीधे कॉल नहीं करता. इसके बजाय, यह create
: create(Class<T>, CreationExtras)
के नए ओवरलोड को कॉल करता है. इसका मतलब है कि ViewModelProvider.Factory
इंस्टेंस को सीधे लागू करने पर, अब इन सभी नए CreationExtras
का ऐक्सेस मिल जाता है:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: यहString
, उस कस्टम पासकोड का ऐक्सेस देता है जिसे आपनेViewModelProvider.get()
को पास किया था.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
,Application
क्लास का ऐक्सेस देता है.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
, उसSavedStateRegistryOwner
को ऐक्सेस करता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
, उसViewModelStoreOwner
को ऐक्सेस करता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.DEFAULT_ARGS_KEY
,Bundle
आर्ग्युमेंट का ऐक्सेस देता है. इन आर्ग्युमेंट का इस्तेमाल,SavedStateHandle
बनाने के लिए किया जाना चाहिए.
गतिविधि 1.5.0-alpha01
, फ़्रैगमेंट 1.5.0-alpha01
, और नेविगेशन 2.5.0-alpha01
का इस्तेमाल करते समय, ये अतिरिक्त जानकारी डिफ़ॉल्ट रूप से मिलती है. अगर उन लाइब्रेरी के पुराने वर्शन का इस्तेमाल किया जाता है, तो आपका CreationExtras
खाली रहेगा. ViewModelProvider.Factory
के सभी मौजूदा सबक्लास को फिर से लिखा गया है, ताकि उन लाइब्रेरी के पुराने वर्शन में इस्तेमाल किए गए लेगसी क्रिएशन पाथ और आने वाले समय में इस्तेमाल किए जाने वाले CreationExtras
पाथ, दोनों के साथ काम किया जा सके.
इन CreationExtras
की मदद से, ऐसा ViewModelProvider.Factory
बनाया जा सकता है जो फ़ैक्ट्री के सबक्लास की सख्त हैरारकी पर भरोसा किए बिना, हर ViewModel
को सिर्फ़ ज़रूरी जानकारी भेजता है:
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-java8
पर निर्भरता को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
मेथड में अब nullable जेनरिक का इस्तेमाल नहीं किया जा सकता. (I9b9f6)
व्यवहार में बदलाव
- अब
Lifecycle.repeatOnLifecycle
:block
को दोहराए जाने पर, हमेशा क्रम से लागू किया जाता है. (Ibab33)
बाहरी योगदान
repeatOnLifecycle
दस्तावेज़ में कोड स्निपेट ठीक करने के लिए, chao2zhang को धन्यवाद. #205.
वर्शन 2.4.0-alpha02
16 जून, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
रिलीज़ हो गया है. 2.4.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-ktx
में एक नईRepeatOnLifecycleWrongUsage
लिंट जांच जोड़ी गई है. इससे पता चलता है किonStart()
याonResume()
मेंrepeateOnLifecycle
का गलत इस्तेमाल कब किया गया है. (706078, b/187887400)
एपीआई में हुए बदलाव
LifecycleOwner.addRepeatingJob
एपीआई कोLifecycle.repeatOnLifecycle
के पक्ष में हटा दिया गया है. यह एपीआई, स्ट्रक्चर्ड मल्टीप्रोसेसिंग का पालन करता है और इसे समझना आसान है. (I4a3a8)ProcessLifecycleInitializer
को सार्वजनिक करें, ताकि अन्यandroidx.startup.Initializer
इनका इस्तेमाल डिपेंडेंसी के तौर पर कर सकें. (I94c31)
गड़बड़ियां ठीक की गईं
- फ़ील्ड में मॉडिफ़ायर होने पर,
NullSafeMutableLiveData
की लिंट जांच से जुड़ी समस्या को ठीक किया गया. (#147, b/183696616) - जेनरिक का इस्तेमाल करते समय,
NullSafeMutableLiveData
लिंट की जांच करने से जुड़ी एक और समस्या को ठीक किया गया. (#161, b/184830263)
बाहरी योगदान
NullSafeMutableLiveData
लिंट जांच को बेहतर बनाने के लिए, maxsav को धन्यवाद. (#147, b/183696616)NullSafeMutableLiveData
लिंट जांच को बेहतर बनाने के लिए, kozaxinan को धन्यवाद. (#161, b/184830263)
वर्शन 2.4.0-alpha01
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
रिलीज़ हो गया है. 2.4.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
lifecycle-process
अबProcessLifecycleOwner
को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है.पहले,
androidx.lifecycle.ProcessLifecycleOwnerInitializer
यह काम करता था.अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तो आपको इसके बजाय यह तरीका अपनाना होगा.ContentProvider
<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
एपीआई में हुए बदलाव
Flow.flowWithLifecycle
एपीआई जोड़ा गया है, जोLifecycle.repeatOnLifecycle
एपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम किसी खास स्टेटस में होने पर, अपस्ट्रीम फ़्लो से वैल्यू उत्सर्जित करता है. यह नएLifecycleOwner.addRepeatinJob
API का विकल्प है. (I0f4cd)
गड़बड़ियां ठीक की गईं
- Lifecycle 2.3.1 से:
NonNullableMutableLiveData
लिंट नियम अब अलग-अलग वैल्यू के फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
लाइफ़साइकल 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
उपलब्ध है या नहीं.viewModel()
औरNavHost
जैसे एपीआई के लिएViewModelStoreOwner
की ज़रूरत होती है. हालांकि, अगरViewModelStoreOwner
सेट नहीं किया जाता है, तो भी ये एपीआई अपवाद दिखाते हैं. (Idf39a)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha02
24 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
रिलीज़ हो गया है. 1.0.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner
में अबprovides
फ़ंक्शन हैं. इनका इस्तेमालCompositionLocalProvider
के साथ किया जा सकता है. इससेasProvidableCompositionLocal()
एपीआई की जगह ले ली जाएगी. (I45d24)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha01
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
रिलीज़ हो गया है. 1.0.0-alpha01 वर्शन में ये कमिट शामिल हैं.
नई सुविधाएं
viewModel()
कॉम्पोज़ेबल औरLocalViewModelStoreOwner
कोandroidx.compose.ui.viewinterop
सेandroidx.lifecycle.viewmodel.compose
पैकेज में इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)
वर्शन 2.3.1
लाइफ़साइकल वर्शन 2.3.1
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.3.1
रिलीज़ हो गया है. 2.3.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट नियम अब अलग-अलग वैल्यू के फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
वर्शन 2.3.0
वर्शन 2.3.0
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-*:2.3.0
रिलीज़ हो गया है. 2.3.0 वर्शन में ये बदलाव शामिल हैं.
2.2.0 के बाद किए गए मुख्य बदलाव
- पार्टिकल नहीं की जा सकने वाली क्लास के लिए
SavedStateHandle
का इस्तेमाल:SavedStateHandle
अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इसके लिए, आपको किसी कीवर्ड के लिएsetSavedStateProvider()
को कॉल करने की अनुमति मिलती है. साथ ही, एकSavedStateProvider
भी दिया जाता है. जबSavedStateHandle
से अपनी स्थिति सेव करने के लिए कहा जाएगा, तबsaveState()
को कॉलबैक मिलेगा. ऐसी कक्षाएं सेव करना जिन्हें पार्सल नहीं किया जा सकता लेख पढ़ें. - लाइफ़साइकल से जुड़ी गतिविधि को लागू करना:
- LifecycleRegistry अब
DESTROYED
को टर्मिनल स्टेटस के तौर पर लागू करता है. LifecycleRegistry
अब इस बात की पुष्टि करता है कि उसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए हमेशा ज़रूरी था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश को पकड़ना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड से इसLifecycleRegistry
को ऐक्सेस करते समय, सही सिंक्रोनाइज़ेशन हो रहा हो.
- LifecycleRegistry अब
- लाइफ़साइकल स्टेटस और इवेंट हेल्पर:
State
और ट्रांज़िशन डायरेक्शन के हिसाब सेEvent
जनरेट करने के लिए,Lifecycle.Event
मेंdownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
के स्टैटिक हेल्पर तरीके जोड़े गए हैं.getTargetState()
मेथड जोड़ा गया है, जोState
देता है. लाइफ़साइकल,Event
के बाद सीधे तौर परState
पर ट्रांज़िशन करेगा. 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 की जांच करने की सुविधा में, क्रैश होने की समस्या को ठीक किया गया है. (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
के बाद सीधे तौर परState
पर ट्रांज़िशन करेगा. (I00887)Lifecycle.withStateAtLeast
ऐसे एपीआई जोड़े गए हैं जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं और स्थिति बदलने के समय, कोड के ऐसे ब्लॉक को सिंक करके चलाते हैं जिसे सस्पेंड नहीं किया जा सकता. इसके बाद, नतीजे के साथ फिर से शुरू करते हैं. ये एपीआई, मौजूदाwhen*
तरीकों से अलग हैं, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते और कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)
व्यवहार में बदलाव
- LifecycleRegistry अब
DESTROYED
को टर्मिनल स्टेटस के तौर पर लागू करता है. (I00887) LifecycleRegistry
अब पुष्टि करता है कि उसके तरीकों को मुख्य थ्रेड पर कॉल किया जाता है. यह गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए हमेशा ज़रूरी था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश को पकड़ना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके साफ़ तौर पर जांच से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड (Ie7280, b/137392809) से इसLifecycleRegistry
को ऐक्सेस करने पर, सही सिंक्रोनाइज़ेशन हो
गड़बड़ियां ठीक की गईं
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 या इसके बाद के वर्शन का इस्तेमाल करने पर, Lint की जांच न होने की समस्या को ठीक किया गया. (aosp/1331903)
वर्शन 2.3.0-alpha04
10 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
रिलीज़ हो गया है. 2.3.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
Lint जांच में क्रैश होने की समस्या को ठीक किया गया. (b/157294666)NonNullableMutableLiveData
की लिंट जांच में अब ऐसे कई मामले शामिल किए गए हैं जिनमेंnull
की वैल्यू, नॉन-नल टाइप पैरामीटर वालेMutableLiveData
पर सेट की गई थी. (b/156002218)
वर्शन 2.3.0-alpha03
20 मई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
रिलीज़ हो गई हैं. 2.3.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
SavedStateHandle
अब लेज़ी सीरियलाइज़ेशन की सुविधा देता है. इसके तहत, किसी दी गई कुंजी के लिएsetSavedStateProvider()
को कॉल करने की अनुमति मिलती है. साथ ही,SavedStateProvider
भी दिया जाता है, जिसेsaveState()
को कॉलबैक मिलेगा. ऐसा तब होगा, जबSavedStateHandle
से उसकी स्थिति सेव करने के लिए कहा जाएगा. (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)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.3.0-alpha01
में रिलीज़ की गईMutableLiveData
लिंट चेक कोlifecycle-livedata-core-ktx
आर्टफ़ैक्ट के साथ पब्लिश न होने की समस्या को ठीक किया गया. (b/155323109)
वर्शन 2.3.0-alpha02
29 अप्रैल, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateViewModelFactory
अब आपको अपने कन्स्ट्रक्टर में कोई शून्यApplication
पास करने की अनुमति देता है, ताकि उन मामलों में बेहतर सहायता मिल सके जहां कोई भी आसानी से उपलब्ध न हो औरAndroidViewModel
के लिए सहायता की ज़रूरत न हो. (aosp/1285740)
गड़बड़ियां ठीक की गईं
- एपीआई 28 और उससे पहले के वर्शन वाले डिवाइसों पर, क्लास की पुष्टि न होने की समस्या को हल करके, कोल्ड स्टार्ट की परफ़ॉर्मेंस को बेहतर बनाया गया है. (aosp/1282118)
वर्शन 2.3.0-alpha01
4 मार्च, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
रिलीज़ हो गया है. 2.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- नए
ViewTreeLifecycleOwner.get(View)
एपीआई की मदद से, किसीView
इंस्टेंस में मौजूदLifecycleOwner
को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको गतिविधि1.2.0-alpha01
और फ़्रैगमेंट1.3.0-alpha01
पर अपग्रेड करना होगा.findViewTreeLifecycleOwner
Kotlin एक्सटेंशन,lifecycle-runtime-ktx
में उपलब्ध है. (aosp/1182361, aosp/1182956) - Lint की एक नई जांच जोड़ी गई है. यह जांच, Kotlin में नॉन-नल के तौर पर तय किए गए
MutableLiveData
परnull
वैल्यू सेट करने पर आपको चेतावनी देती है. यह विकल्प,livedata-core-ktx
याlivedata-ktx
आर्टफ़ैक्ट का इस्तेमाल करने पर उपलब्ध होता है. (aosp/1154723, aosp/1159092) - एक नया
lifecycle-runtime-testing
आर्टफ़ैक्ट उपलब्ध है, जोTestLifecycleOwner
उपलब्ध कराता है. यहLifecycleOwner
को लागू करता है और थ्रेड सेफ़ म्यूटेबलLifecycle
उपलब्ध कराता है. (aosp/1242438)
गड़बड़ियां ठीक की गईं
lifecycle-runtime
आर्टफ़ैक्ट का पैकेज का नाम अब यूनीक है. (aosp/1187196)
वर्शन 2.2.0
ViewModel-Savedstate का वर्शन 2.2.0
5 फ़रवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.
लाइफ़साइकल ViewModel SavedState अब लाइफ़साइकल के अन्य आर्टफ़ैक्ट के साथ एक ही वर्शन शेयर करता है. 2.2.0
का व्यवहार, 1.0.0
के व्यवहार से मेल खाता है.
वर्शन 2.2.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-*:2.2.0
रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.
2.1.0 के बाद किए गए ज़रूरी बदलाव
- लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया
lifecycle-runtime-ktx
आर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए,lifecycle-livedata-ktx
को भी बड़ा किया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें. ViewModelProviders.of()
का इस्तेमाल बंद किया गया है:ViewModelProviders.of()
का इस्तेमाल बंद कर दिया गया है. फ़्रैगमेंट1.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 इंक्रीमेंटल एनोटेशन प्रोसेसर: लाइफ़साइकल का एनोटेशन प्रोसेसर डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है.
अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग भाषा में लिखा गया है, तो इसके बजाय
DefautLifecycleObserver
का इस्तेमाल किया जा सकता है. अगर इसे Java 7 प्रोग्रामिंग भाषा में लिखा गया है, तोLifecycleEventObserver
का इस्तेमाल किया जा सकता है.
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
रिलीज़ हो गया है. 2.2.0-rc03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
ViewModelStore
में मॉक किया गयाViewModel
स्टोर करने और बाद में डिफ़ॉल्ट फ़ैक्ट्री के साथ क्वेरी करने पर होने वाली गड़बड़ी को ठीक किया गया.launchWhenCreated
और मिलते-जुलते तरीकों मेंDispatchers.Main.immediate
के इस्तेमाल को ठीक करें, ताकि लाइफ़साइकल इवेंट के दौरान उन्हें सिंक करके कॉल किया जा सके. (aosp/1156203)
बाहरी योगदान
- समस्या को ठीक करने में मदद करने के लिए, Anders Järleberg को धन्यवाद! (aosp/1156203)
- इनलाइन किए गए फ़ंक्शन को लागू करने की समीक्षा करने के लिए, Jetbrains के Vsevolod Tolstopyatov को धन्यवाद.
डिपेंडेंसी में बदलाव
- लाइफ़साइकल एक्सटेंशन अब फ़्रैगमेंट
1.2.0-rc03
पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
रिलीज़ हो गया है. 2.2.0-rc02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइब्रेरी के ProGuard सेटअप में एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, टारगेट एपीआई लेवल 29 से कम होने पर, एपीआई 28 और उसके बाद के वर्शन पर चलने वाले डिवाइसों पर असर डालती थी. (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)
बाहरी योगदान
- समस्या को ठीक करने में मदद करने के लिए, Nicklas Ansman को धन्यवाद! (aosp/1145596)
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
रिलीज़ हो गया है. 2.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Lifecycle 2.2.0-alpha05 में
ProcessLifecycleOwner
के क्रम में हुई गड़बड़ी को ठीक किया गया. साथ ही, Android 10 डिवाइसों पर गतिविधि केLifecycleOwner
को 'शुरू किया गया' और 'फिर से शुरू किया गया' पर ले जाने की गड़बड़ी को भी ठीक किया गया. (aosp/1128132) - लाइफ़साइकल
2.2.0-alpha05
में हुई एक समस्या को ठीक किया गया है. इसकी वजह से,lifecycle-process
के2.0.0
या2.1.0
वर्शन का इस्तेमाल करने परNullPointerException
दिखता था. (b/141536990)
वर्शन 2.2.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
रिलीज़ हो गया है. 2.2.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोरूटीन लाइव डेटा बिल्डर में रेस कंडीशन को ठीक किया गया. b/140249349
वर्शन 2.2.0-alpha04
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
, औरliveData
के लागू होने की प्रक्रिया में, अबDispatchers.Main
के बजायDispatchers.Main.immediate
का इस्तेमाल किया जाता है. (b/139740492)
बाहरी योगदान
Dispatchers.Main.immediate
पर माइग्रेट करने के लिए, Nicklas Ansman को धन्यवाद! (aosp/1106073)
वर्शन 2.2.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
ViewModelStoreOwner
को लागू करने के बाद, अब डिफ़ॉल्टViewModelProvider.Factory
देने के लिए,HasDefaultViewModelProviderFactory
को भी लागू किया जा सकता है. ऐसा ऐक्टिविटी1.1.0-alpha02
, फ़्रैगमेंट1.2.0-alpha02
, और नेविगेशन2.2.0-alpha01
के लिए किया गया है. (aosp/1092370, b/135716331)
एपीआई में हुए बदलाव
ViewModelProviders.of()
का अब इस्तेमाल नहीं किया जा सकता. वही फ़ंक्शन पाने के लिए, नएViewModelProvider(ViewModelStoreOwner)
कन्स्ट्रक्टर मेंFragment
याFragmentActivity
पास किया जा सकता है. (aosp/1009889)
वर्शन 2.2.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:*:2.2.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
LiveDataScope.initialValue
कोLiveDataScope.latestValue
से बदल दिया गया है, जोliveData
ब्लॉक की उत्सर्जित की गई मौजूदा वैल्यू को ट्रैक करेगा.liveData
बिल्डर में एक नया ओवरलोड जोड़ा गया है, जोtimeout
पैरामीटर कोDuration
टाइप के तौर पर लेता है
वर्शन 2.2.0-alpha01
7 मई, 2019
androidx.lifecycle:*:2.2.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं. इनकी मदद से, Lifecycle और LiveData के लिए Kotlin कोरुटिन का इस्तेमाल किया जा सकता है. इनके बारे में ज़्यादा जानकारी वाला दस्तावेज़ यहां देखा जा सकता है.
ViewModel-SavedState का वर्शन 1.0.0
वर्शन 1.0.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
रिलीज़ हो गया है. 1.0.0 वर्शन में ये बदलाव शामिल हैं.
1.0.0 में मौजूद अहम सुविधाएं
- नई SavedStateHandle क्लास जोड़ी गई. इससे आपकी
ViewModel
क्लास, सेव की गई स्थिति को ऐक्सेस कर सकती हैं और उसमें योगदान दे सकती हैं. यह ऑब्जेक्ट,ViewModel
क्लास के कन्स्ट्रक्टर में और फ़्रैगमेंट और 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 वर्शन में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- लाइफ़साइकल ViewModel SavedState अब लाइफ़साइकल
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 में योगदान दे सकता है. इसके लिए, आपको हाल ही में लॉन्च किए गए व्यूमॉडल की फ़ैक्ट्रीSavedStateVMFactory
का इस्तेमाल करना होगा. साथ ही, आपके ViewModel में एक कन्स्ट्रक्टर होना चाहिए, जो पैरामीटर के तौर परSavedStateHandle
ऑब्जेक्ट स्वीकार करता हो.
वर्शन 2.1.0
2.0.0 के बाद किए गए अहम बदलाव
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserver
जोड़ा गया. यह छिपी हुईGenericLifecycleObserver
क्लास के बजाय, एक सार्वजनिक एपीआई है. LiveData.observe
औरTransformations.*
तरीकों के लिए ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChanged
जोड़ा गया, जो एक नया LiveData ऑब्जेक्ट बनाता है. यह तब तक कोई वैल्यू नहीं भेजता, जब तक सोर्सLiveData
की वैल्यू में बदलाव नहीं किया जाता.- एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScope
जोड़कर, ViewModels में कोरूटीन की सुविधा जोड़ी गई.
वर्शन 2.1.0
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.1.0
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
वर्शन 2.1.0-rc01
2 जुलाई, 2019
androidx.lifecycle:*:2.1.0-rc01
को androidx.lifecycle:*:2.1.0-beta01
में किए गए बदलावों के बिना रिलीज़ किया गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
वर्शन 2.1.0-beta01
7 मई, 2019
androidx.lifecycle:*:2.1.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- लाइफ़साइकल को बीटा वर्शन में अपग्रेड कर दिया गया है:
liveData
ट्रांसफ़ॉर्मेशन और ऑब्ज़र्वेशन के लिए एक्सटेंशन फ़ंक्शन,ViewModel
प्रॉपर्टी डेलिगेशन के साथ शुरू करने की सुविधा वगैरह जैसे एपीआई, पिछले अल्फा वर्शन में लॉन्च किए गए थे. ये अब स्थिर हो गए हैं और इनमें कोई बदलाव नहीं होगा.
वर्शन 2.1.0-alpha04
3 अप्रैल, 2019
androidx.lifecycle:*:2.1.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
- अहम बदलाव:
by viewModels()
औरby activityViewModels()
के पीछे मौजूद एपीआई को बदल दिया गया है, ताकि सिर्फ़ViewModelStoreOwner
के बजाय सीधेViewModelStore
के साथ काम किया जा सके. (aosp/932932)
वर्शन 2.1.0-alpha03
13 मार्च, 2019
androidx.lifecycle:*:2.1.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए सभी कमिट की पूरी सूची यहां देखी जा सकती है.
एपीआई में हुए बदलाव
ViewModelProvider.KeyedFactory
हटाया गया.ViewModelProvider.Factory
के अलावा दूसरा इंटरफ़ेस, नई सुविधाओं के साथ अच्छी तरह से काम नहीं करता था. इसकी वजह यह है कि Kotlinby viewmodels {}
में प्रॉपर्टी डीलेगेशन की सुविधा है. (aosp/914133)
वर्शन 2.1.0-alpha02
30 जनवरी, 2019
androidx.lifecycle 2.1.0-alpha02
रिलीज़ हो गया है.
एपीआई में हुए बदलाव
LifecycleRegistry
में अबsetCurrentState()
तरीका शामिल है, जो अब काम न करने वालेsetState()
तरीके की जगह लेता है. (aosp/880715)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
ViewModelStore
को मिटाने पर, मॉकViewModel
इंस्टेंस क्रैश हो जाते थे. b/122273087
वर्शन 2.1.0-alpha01
17 दिसंबर, 2018
androidx.lifecycle 2.1.0-alpha01
रिलीज़ हो गया है.
नई सुविधाएं
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserver
जोड़ा गया. यह छिपी हुईGenericLifecycleObserver
क्लास के बजाय, एक सार्वजनिक एपीआई है. LiveData.observe
औरTransformations.*
तरीकों के लिए ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChanged
तरीका जोड़ा गया. इससे एक नयाLiveData
ऑब्जेक्ट बनता है, जो तब तक कोई वैल्यू नहीं दिखाता, जब तक सोर्स LiveData की वैल्यू में बदलाव नहीं किया जाता.- ViewModels में कोरूटीन की सुविधा: एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScope
जोड़ी गई. ViewModelProvider.KeyedFactory
जोड़ा गया, जो ViewModels के लिए फ़ैक्ट्री है. यहcreate
तरीके मेंkey
औरClass
को स्वीकार करती है.
वर्शन 2.0.0
वर्शन 2.0.0
21 सितंबर, 2018
लाइफ़साइकल 2.0.0
को ViewModel में 2.0.0-rc01
से मिली एक गड़बड़ी को ठीक करके रिलीज़ किया गया है.
गड़बड़ियां ठीक की गईं
- ViewModel के लिए ProGuard का एक ऐसा नियम ठीक किया गया है जिसकी वजह से, कन्स्ट्रक्टर को गलत तरीके से हटा दिया गया था b/112230489
वर्शन 2.0.0-beta01
2 जुलाई, 2018
गड़बड़ियां ठीक की गईं
- LifecycleObserver के लिए ProGuard नियम को ठीक किया गया, ताकि सिर्फ़ लागू किए गए इंटरफ़ेस ही शामिल किए जाएं, न कि सब-इंटरफ़ेस b/71389427
- कोड को छोटा करने और उसे अस्पष्ट बनाने की सुविधा देने के लिए, ViewModel के ProGuard नियमों को ठीक किया गया
AndroidX से पहले के वर्शन
Lifecycle के AndroidX से पहले के वर्शन के लिए, ये डिपेंडेंसी शामिल करें:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
वर्शन 1.1.1
21 मार्च, 2018
सिर्फ़ एक छोटा बदलाव: android.arch.core.util.Function
को arch:runtime
से arch:common
में ले जाया गया है. इससे, इसे रनटाइम डिपेंडेंसी के बिना इस्तेमाल किया जा सकता है. उदाहरण के लिए, नीचे दिए गए paging:common
में.
lifecycle:common
, lifecycle:runtime
पर निर्भर करता है. इसलिए, इस बदलाव से lifecycle:runtime
पर सीधे तौर पर असर नहीं पड़ता. सिर्फ़ वे मॉड्यूल सीधे तौर पर lifecycle:common
पर निर्भर करते हैं जिन पर पेजिंग का असर पड़ता है.
वर्शन 1.1.0
22 जनवरी, 2018
पैकेजिंग में बदलाव
अब नई और बहुत छोटी डिपेंडेंसी उपलब्ध हैं:
android.arch.lifecycle:livedata:1.1.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
को वापस पाया जा सके.