लाइफ़साइकल
इस टेबल में, androidx.lifecycle
ग्रुप के सभी आर्टफ़ैक्ट की सूची होती है.
सह-प्रॉडक्ट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
lifecycle-* | 2.8.7 | - | - | 2.9.0-alpha06 |
lifecycle-viewmodel-compose | 2.8.7 | - | - | 2.9.0-alpha06 |
डिपेंडेंसी का एलान करना
लाइफ़साइकल पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़ना होगा. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
ग्रूवी
dependencies { def lifecycle_version = "2.8.5" 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.5" 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
ग्रूवी
dependencies { def lifecycle_version = "2.8.5" 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.5" 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-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 मल्टीप्लैटफ़ॉर्म
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 के इवान माटकोव का धन्यवाद. (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
अब सामान्य सोर्स सेट (केएमपी) में उपलब्ध है. (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 के साथ काम करने के लिए, कंपोज़ 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 मल्टीप्लैटफ़ॉर्म के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जा रहे हैं.
इस बदलाव को पूरा करने के लिए, ViewModelProvider
वाले तरीके में java.lang.Class<T>
का इस्तेमाल किया जाता है. हालांकि, इसके लिए kotlin.reflect.KClass<T>
की ज़रूरत होती है.
Android पर बाइनरी के साथ काम करने की सुविधा को बरकरार रखा गया है. हालांकि, Android API के प्लैटफ़ॉर्म की तुलना सामान्य API के प्लैटफ़ॉर्म से करने पर, कुछ अहम बदलाव दिखते हैं:
ViewModelProvider
इंस्टेंस को बनाने का काम, अब सीधे इसके कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों से किया जाता है.ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
ViewModelProvider.Factory
से बढ़ाएं. साथ ही,create
तरीके का इस्तेमाल करें, जोCreationExtras
लेता है याviewModelFactory
Kotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
- JVM के अलावा दूसरे प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
दिखेगा. अगर कोई कस्टम फ़ैक्ट्री उपलब्ध नहीं कराई जाती है, तो JVM प्लैटफ़ॉर्म पर, बिना-आर्ग्युमेंट वाले ViewModel कन्स्ट्रक्टर का इस्तेमाल करके, काम करने की सुविधा को बनाए रखा जाता है. viewModelScope
, उन प्लैटफ़ॉर्म परEmptyCoroutineContext
पर फ़ॉलबैक करेगा जहांDispatchers.Main
उपलब्ध नहीं है (उदाहरण के लिए, Linux).
जिन आर्टफ़ैक्ट पर असर पड़ा:
lifecycle-viewmodel
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, यह Android के साथ-साथ jvm और iOS पर भी काम करता है.lifecycle-viewmodel-ktx
अब खाली है. सभी एपीआई कोlifecycle-viewmodel
में ले जाया जा रहा है.lifecycle-viewmodel-compose
सभी एपीआई कोcommon
में ले जाता है और एक ऐसा Android आर्टफ़ैक्ट भेजता है जोandroidx.compose
के मल्टीप्लैटफ़ॉर्म की सुविधा से मेल खाता है.
व्यवहार में बदलाव
- अगर
clazz: KClass<VM : ViewModel>
के साथ पहले से ही कोईinitializer
जोड़ा गया है, तोInitializerViewModelFactory
(इसमेंviewModelFactory
बिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentException
दिखाएगा. (Ic3a36)
आम समस्याएं
lifecycle-*:2.8.0
के लिए कम से कम 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
एएआर में पैकेज कर दिया गया है. (aosp/3038274, b/322382422)- ViewModel में अटैच किए गए
AutoCloseable
इंस्टेंस से, अनजाने में हुए ऑर्डर में होने वाले बदलाव को ठीक किया गया है. यह पहले के क्रमaddCloseable(String, AutoCloseable)
, फिरaddClosable(AutoCloseable)
, और उसके बादonCleared()
को वापस लाया गया था. (aosp/3041632) - नेटिव और JVM डेस्कटॉप एनवायरमेंट के लिए,
viewModelScope
बनाने के डिफ़ॉल्ट तरीके को बेहतर बनाएं. (aosp/3039221)
बाहरी योगदान
- जेवीएम डेस्कटॉप पर, मुख्य थ्रेड की जांच को बेहतर बनाने के लिए, विक्टर क्रॉप का धन्यवाद. (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 मल्टीप्लैटफ़ॉर्म के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जा रहे हैं. (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 कन्स्ट्रक्टर का इस्तेमाल करके, काम करने की सुविधा को बनाए रखा जाता है. - जिन प्लैटफ़ॉर्म पर
Dispatchers.Main
उपलब्ध नहीं है उनमेंviewModelScope
,EmptyCoroutineContext
पर वापस आ जाएगा (उदाहरण के लिए, 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 कीप के नियम हटा दिए गए हैं. इसका मतलब यह है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने की इच्छा रखने वाले प्रोगार्ड कोड को, इस्तेमाल के खास उदाहरण के लिए अपने Keep के नियम खुद देने होंगे. जैसे, अब से काम न करने वाले@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().
(If2c0f, b/176311030) के साथFlow
के तौर पर देखा जा सकता है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 के रखरखाव के नियम हटा दिए गए हैं. इसका मतलब यह है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने की इच्छा रखने वाले प्रोगार्ड कोड को, इस्तेमाल के खास उदाहरण के लिए Keep के अपने नियम उपलब्ध कराने होंगे. (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
पर कभी भी किसी वैल्यू को साफ़ तौर पर सेट किया गया है या नहीं. इससे,null
रिटर्न करने वालेliveData.value
के बीच अंतर किया जा सकता है, क्योंकि न तो कभी कोई वैल्यू सेट की गई थी या न ही कोई साफ़ तौर पर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
परcoroutineScope
फ़ील्ड की जानकारी देने वाले Kotlin एक्सटेंशन को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 कोड में उस सिंटैक्स का इस्तेमाल करना चाहिए जो पहले सिर्फ़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)- नया
LiveData
ऑब्जेक्ट बनाते समय,FlowLiveData
काasLiveData
फ़ंक्शन, अब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
पर एक नया एक्सटेंशन जोड़ा गया है. यह फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, Compose State के तौर पर इसकी नई वैल्यू दिखाता है. फ़्लो इकट्ठा किया जाता है और नया उत्सर्जन, स्टेट की वैल्यू पर सेट किया जाता है. ऐसा तब होता है, जब लाइफ़साइकल कम से कम किसी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
इंस्टेंस बनाने के लिए, Lambda फ़ैक्ट्री की मदद लेता है. इसके लिए, पसंद के मुताबिक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) }
SaveStateHandle Compose सेवर इंटिग्रेशन -
lifecycle-viewmodel-compose
आर्टफ़ैक्ट में अबSavedStateHandle.saveable
में, प्रयोग के तौर पर इस्तेमाल होने वाले नए एपीआई शामिल हैं. इनकी मदद से, `ViewModel केSavedStateHandle
सेrememberSaveable
जैसे काम किए जा सकते हैं.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
आपने
addCloseable()
एपीआई और नया कंस्ट्रक्टर ओवरलोड जोड़ा है. इसकी मदद से,ViewModel
में एक या उससे ज़्यादाCloseable
ऑब्जेक्ट जोड़े जा सकते हैं. ये ऑब्जेक्ट,onCleared()
में मैन्युअल तरीके से काम किए बिनाViewModel
के मिटाए जाने के बाद बंद हो जाएंगे.उदाहरण के लिए, ऐसा कोरुटाइन स्कोप बनाने के लिए जिसे 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
क्लास को मैनेज करने के लिए, Lambda फ़ंक्शन को जोड़ने की अनुमति देता है. इसके लिए,CreationExtras
को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल किया जाता है. (If58fc, b/216687549)lifecycle-viewmodel-compose
अबviewModel()
एपीआई की सुविधा देता है. यहViewModel
इंस्टेंस बनाने के लिए, Lambda फ़ैक्ट्री की मदद लेता है. इसके लिए, पसंद के मुताबिकViewModelProvider.Factory
बनाने की ज़रूरत नहीं होती. (I97fbb, b/216688927)
एपीआई में हुए बदलाव
- अब
lifecycle-viewmodel-compose
की मदद से,CreationExtras
के साथViewModel
बनाया जा सकता है. (I08887, b/216688927)
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
सेDESTROYED
पर ले जाने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
में कोई ऑब्ज़र्वर अटैच हो. (I7c390, b/177924329)DESTROYED
राज्य में पहुंचने पर,LifecycleRegistry
अब अपने ऑब्ज़र्वर को हटा देगा. (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
की सब-क्लास के एक रिजिड सेट के बजाय हर एक फ़ंक्शन अतिरिक्त फ़ंक्शन जोड़ता है (AndroidViewModelFactory
के ज़रिए Application
कंस्ट्रक्टर पैरामीटर को अनुमति देना, SavedStateViewModelFactory
और AbstractSavedStateViewModelFactory
के ज़रिए SavedStateHandle
कंस्ट्रक्टर पैरामीटर की अनुमति देना वगैरह), हम स्टेटलेस फ़ैक्ट्रियों की दुनिया में जा रहे हैं जो एक नए कॉन्सेप्ट CreationExtras
पर निर्भर हैं. (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)
आपके ComponentActivity
या Fragment
में getDefaultViewModelCreationExtras()
को ओवरराइड करके, कस्टम CreationExtras
उपलब्ध कराया जा सकता है. इससे, उन्हें आपकी पसंद के मुताबिक 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)
बाहरी योगदान
वर्शन 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)
लाइफ़साइकल व्यूमॉडल कंपोज़ वर्शन 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
के बाद वाले चरण में सीधे ट्रांज़िशन करेगा. 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(...)
का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, आपको यह पक्का करना होगा कि जब इसLifecycleRegistry
को अलग-अलग थ्रेड से ऐक्सेस किया जाता है, तो सही सिंक हो जाए (Ie7280, b/137392809)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
में क्रैश होने की समस्या को ठीक किया गया. (b/159987480)lifecycle-livedata-core-ktx
(खास तौर परNullSafeMutableLiveData
) के साथ बंडल की गई लिंट जांच के लिए,ObsoleteLintCustomCheck
को ठीक किया गया. (b/158699265)
वर्शन 2.3.0-alpha05
24 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
रिलीज़ हो गया है. 2.3.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LiveData
अब फिर से आने वाले मामलों को बेहतर तरीके से मैनेज करता है. इससेonActive()
याonInactive()
को डुप्लीकेट कॉल करने से बचा जा सकता है. (b/157840298)- Android Studio 4.1 Canary 6 या इसके बाद के वर्शन का इस्तेमाल करने पर, 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
देने पर,SavedStateHandle
से उसकी स्थिति सेव करने के लिए कहने पर,saveState()
को कॉलबैक मिलेगा. (b/155106862)- नए
ViewTreeViewModelStoreOwner.get(View)
एपीआई की मदद से, किसीView
इंस्टेंस में मौजूदViewModelStoreOwner
को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
, और AppCompat1.3.0-alpha01
पर अपग्रेड करना होगा.lifecycle-viewmodel-ktx
मेंfindViewModelStoreOwner()
Kotlin एक्सटेंशन जोड़ा गया है. (aosp/1295522)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
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
पर अपग्रेड करना होगा.lifecycle-runtime-ktx
मेंfindViewTreeLifecycleOwner
Kotlin एक्सटेंशन उपलब्ध है. (aosp/1182361, aosp/1182956) - एक नया लिंट चेक जोड़ा गया, जो
MutableLiveData
परnull
वैल्यू सेट करने पर, आपको चेतावनी देता है. यह वैल्यू, Kotlin में 'शून्य' के तौर पर सेट की गई होती है. यह विकल्प,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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- मॉक
ViewModel
कोViewModelStore
में सेव करते समय, गड़बड़ी होने की गड़बड़ी को ठीक किया गया. साथ ही, बाद में डिफ़ॉल्ट फ़ैक्ट्री से क्वेरी करने पर गड़बड़ी हुई. - लाइफ़साइकल इवेंट के दौरान,
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 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल 2.2.0-alpha05 में पेश किए गए रिग्रेशन को
ProcessLifecycleOwner
के क्रम में ठीक किया गया है. साथ ही, गतिविधि केLifecycleOwner
को Android 10 डिवाइसों पर शुरू और फिर से शुरू किया गया है. (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 में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel सेव किया गया स्टेट, अब लाइफ़साइकल
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()
में पहली बार, सेव किए गए स्टेट 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
से, 'सेव की गई स्थिति' में योगदान दिया जा सकता है. इसके लिए, आपको हाल ही में लॉन्च किए गए व्यूमॉडल की फ़ैक्ट्री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
गड़बड़ियां ठीक की गईं
- सिर्फ़ लागू करने के तरीके को बनाए रखने के लिए, लाइफ़साइकल ऑब्ज़र्वर प्रोगार्ड नियम को ठीक किया गया है, सबइंटरफ़ेस को नहीं 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
को वापस पाया जा सके.