लाइफ़साइकल
इस टेबल में, androidx.lifecycle
ग्रुप के सभी आर्टफ़ैक्ट शामिल हैं.
सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
लाइफ़साइकल-* | 2.8.4 | - | - | 2.9.0-ऐल्फ़ा01 |
लाइफ़साइकल-व्यू-मॉडल-कंपोज़ | 2.8.4 | - | - | 2.9.0-ऐल्फ़ा01 |
डिपेंडेंसी तय करना
लाइफ़साइकल पर डिपेंडेंसी जोड़ने के लिए, आपको Google Maven रिपॉज़िटरी को अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.
उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle
फ़ाइल में ज़रूरत है
आपका ऐप्लिकेशन या मॉड्यूल:
Kotlin
ग्रूवी
dependencies { def lifecycle_version = "2.8.4" 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.4" 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.4" 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.4" 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.8
वर्शन 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
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 या उससे पहले के वर्शन के साथ लाइफ़साइकल 2.8.X का इस्तेमाल करने पर,
CompositionLocal LocalLifecycleOwner not present
गड़बड़ियां ठीक की गईं - अब आपके पास Compose के किसी भी वर्शन के साथ लाइफ़साइकल 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
का इस्तेमाल करता है. अब इससेAutoCloseable
ऑब्जेक्ट कोkey
के साथ जोड़ा जा सकता है, जो उन्हेंgetCloseable()
के ज़रिए वापस पाने की अनुमति देता है.LifecycleStartEffect
औरLifecycleResumeEffect
को पासकोड के बिना कॉल करना, अब गड़बड़ी का हिस्सा है. ऐसाDisposableEffect
API के तरीके से किया जाता है जिसका इस्तेमाल इन एपीआई के साथ किया जाता है.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 मल्टीप्लैटफ़ॉर्म के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जा चुके हैं.
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-common
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के साथ-साथ jvm और iOS के साथ भी काम करता है.lifecycle-runtime
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के साथ-साथ jvm और iOS के साथ भी काम करता है.lifecycle-runtime-ktx
अब खाली है और सभी एपीआई कोlifecycle-runtime
में ले जाया जा रहा है.lifecycle-runtime-compose
सभी एपीआई कोcommon
में ले जाता है और एक ऐसा Android आर्टफ़ैक्ट भेजता है जोandroidx.compose
के मल्टीप्लैटफ़ॉर्म की सुविधा से मेल खाता है.
ViewModel Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करता है
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई, अब Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जा रहे हैं.
इस बदलाव को पूरा करने के लिए, ViewModelProvider
वाले तरीके में java.lang.Class<T>
का इस्तेमाल किया जाता है. हालांकि, इसके लिए kotlin.reflect.KClass<T>
की ज़रूरत होती है.
Android पर बाइनरी कंपैटबिलिटी बनाए रखी गई है. हालांकि, सामान्य एपीआई प्लैटफ़ॉर्म से Android API प्लैटफ़ॉर्म की तुलना करने के दौरान, कुछ अहम बदलाव किए गए हैं:
ViewModelProvider
इंस्टेंस को बनाने का काम, अब सीधे इसके कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों से किया जाता है.ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
ViewModelProvider.Factory
से बढ़ाएं. साथ ही,create
तरीके का इस्तेमाल करें, जोCreationExtras
लेता है याviewModelFactory
Kotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
- गैर-JVM प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने परUnsupportedOperationException
मिलेगा. JVM प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री नहीं दिए जाने पर, no-आर्गेंस ViewModel कंस्ट्रक्टर का इस्तेमाल करके काम करना सुरक्षित रखा जाता है. - जिन प्लैटफ़ॉर्म पर
Dispatchers.Main
उपलब्ध नहीं है उनमेंviewModelScope
,EmptyCoroutineContext
पर वापस आ जाएगा (उदाहरण के लिए, 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
पर ले जाता है. साथ ही, एक Android आर्टफ़ैक्ट भेजता है, जोandroidx.compose
के लिए, मल्टीप्लैटफ़ॉर्म की सुविधा से मेल खाता है. (If7a71, I4f4a0, b/331769623)
वर्शन 2.8.0-alpha04
3 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये कमिट मौजूद हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
आर्टफ़ैक्ट, अब Kotlin Multiplatform के साथ काम कर सकता है. यह अपने कोड कोcommon
पर ले जाता है. साथ ही, एक Android आर्टफ़ैक्ट भेजता है, जोandroidx.compose
के मल्टीप्लैटफ़ॉर्म की सुविधा से मेल खाता है. इस बदलाव को ध्यान में रखते हुए, कंपोज़ेबलviewModel
तरीके में अबjava.lang.Class
के साथ-साथKClass
भी स्वीकार किए जाते हैं. (b/330323282)
गड़बड़ियां ठीक की गईं
- कई फ़ॉल्स पॉज़िटिव से बचने के लिए,
NullSafeMutableLiveData
को फिर से रीफ़ैक्ट कर दिया गया है. (I2d8c1, Iafb18, I03463, I7ecef)
डिपेंडेंसी अपडेट
lifecycle-viewmodel-compose
आर्टफ़ैक्ट अब Compose के वर्शन 1.6.0 पर निर्भर करता है.- लाइफ़साइकल अब प्रोफ़ाइल इंस्टॉलर 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
वाले तरीके में java.lang.Class<T>
का इस्तेमाल किया जाता है. हालांकि, इसके लिए kotlin.reflect.KClass<T>
की ज़रूरत होती है.
Android पर बाइनरी कंपैटबिलिटी बनाए रखी गई है. हालांकि, सामान्य एपीआई प्लैटफ़ॉर्म से Android API प्लैटफ़ॉर्म की तुलना करने के दौरान, कुछ अहम बदलाव किए गए हैं:
ViewModelProvider
इंस्टेंस को बनाने का काम, अब सीधे इसके कंस्ट्रक्टर को कॉल करने के बजाय,ViewModelProvider.create()
तरीकों से किया जाता है.ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
ViewModelProvider.Factory
से बढ़ाएं. साथ ही,create
तरीके का इस्तेमाल करें, जोCreationExtras
लेता है याviewModelFactory
Kotlin DSL का इस्तेमाल करता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्री को
- गैर-JVM प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने परUnsupportedOperationException
मिलेगा. JVM प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री नहीं दिए जाने पर, no-आर्गेंस 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 के यूज़र इंटरफ़ेस (यूआई) से लाइफ़साइकल-रनटाइम-कंपोज़ पर ले जाया गया है, ताकि इसके कंपोज़ पर आधारित हेल्पर एपीआई का इस्तेमाल, 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 मल्टीप्लैटफ़ॉर्म के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जा चुके हैं. (b/317249252)
एपीआई में बदलाव
LifecycleStartEffect
औरLifecycleResumeEffect
को पासकोड के बिना कॉल करना, अब गड़बड़ी का हिस्सा है. ऐसाDisposableEffect
API के तरीके से किया जाता है जिसका इस्तेमाल इन एपीआई के साथ किया जाता है. (Ib0e0c, b/323518079)ViewModel
, अबCloseable
के बजायAutoCloseable
का इस्तेमाल करता है. यह पुराने सिस्टम के साथ काम करने की सुविधा में किया गया बदलाव है. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
नेLiveData.toPublisher(lifecycleOwner)
का समर्थन किया. (Iabe29, b/262623005)
बाहरी योगदान
- लाइफ़साइकल को Kotlin मल्टीप्लैटफ़ॉर्म पर माइग्रेट करने में, Jetbrains की ओर से इवान माटकोव का धन्यवाद. (aosp/2926690, I0c5ac, If445d)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
ViewModel
में अबkey
के साथCloseable
ऑब्जेक्ट जोड़े जा सकते हैं. यह ऑब्जेक्ट,getCloseable()
के ज़रिए उन्हें वापस पाने की अनुमति देता है. (I3cf63)
वर्शन 2.7
वर्शन 2.7.0
10 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.7.0
रिलीज़ हो गया है. वर्शन 2.7.0 में ये कमियां शामिल हैं.
2.6.0 से अब तक हुए अहम बदलाव
- अब
TestLifecycleOwner
में निलंबित फ़ंक्शनsetCurrentState()
शामिल है. यह पक्का करता है कि स्थिति बदलने से पहले, सभीLifecycleObserver
कॉलबैक पूरे हों. खास तौर पर,currentState
प्रॉपर्टी को सीधे सेट करने के उलट, इसमेंrunBlocking
का इस्तेमाल नहीं होता. इसलिए, इसेrunTest
से मिले कोरूटीन में इस्तेमाल करना सुरक्षित बनाया जाता है. map
औरswitchMap
केLiveData
एक्सटेंशन, अबdistinctUntilChanged
के व्यवहार की जानकारी देते हैं - अगरLiveData
मेंvalue
सेट है, तोmap
/switchMap
फ़ंक्शन को तुरंत कॉल किया जाएगा, ताकि दिए गएLiveData
केvalue
को पॉप्युलेट किया जा सके. इससे यह पक्का होता है कि शुरुआती वैल्यू को पहली कंपोज़िशन (observeAsState()
के साथ इस्तेमाल किए जाने पर) के हिस्से के तौर पर सेट किया जाएगा. हालांकि, इससे निगरानी के व्यवहार में कोई बदलाव नहीं होगा. हालांकि,LiveData
सोर्स से अपडेट की वैल्यू,LiveData
को देखना शुरू करने के बाद ही लागू होंगी.- इस रिलीज़ से उस समस्या को हल किया गया है जिसकी वजह से
SavedStateHandle
, पूरी प्रोसेस के बंद होने और फिर से आनंद लेने के बाद, पसंद के मुताबिक बनाई गईParcelable
क्लास को सही तरीके से पहले जैसा नहीं कर पाता. Android फ़्रेमवर्क में टाइप की जानकारी न होने की वजह से, पसंद के मुताबिक पार्स किए जा सकने वाले पार्स किए जा सकने वाले एलिमेंट के कलेक्शन में अतिरिक्त काम करना पड़ता है. इसके लिए, मैन्युअल तरीके से सही टाइप का अरे बनाना होता है. साथ ही,get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब खास तौर पर इसकी जानकारी दी जाती है. LifecycleObserver
से जुड़े ProGuard कीप के नियम हटा दिए गए हैं. इसका मतलब यह है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने की इच्छा रखने वाले प्रोगार्ड कोड को, इस्तेमाल के खास उदाहरण के लिए अपने Keep के नियम खुद देने होंगे. उदाहरण के लिए, काम न करने वाले@OnLifecycleEvent
एनोटेशन का इस्तेमाल करना.
लाइफ़साइकल इवेंट की निगरानी
LifecycleEventObserver
के इस्तेमाल के बजाय, अबLifecycle.asFlow()
एक्सटेंशन के तरीके का इस्तेमाल करकेLifecycle.Event
केFlow
देखे जा सकते हैं.- Jetpack Compose का इस्तेमाल करने वाले लोग अब
LifecycleEventEffect
का इस्तेमाल करके,Lifecycle.Event
पर आधारित Compose के साइड इफ़ेक्ट इस्तेमाल कर सकते हैं.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose के उपयोगकर्ता इवेंट के पेयर को मैनेज करने के लिए,
LifecycleStartEffect
औरLifecycleResumeEffect
का इस्तेमाल कर सकते हैं. इवेंट को रोका गया और फिर से शुरू करके रोका गया. यह एपीआई,DisposableEffect
में मौजूद जानकारी का डुप्लीकेट वर्शन होता है. यह उन मामलों में सही होता है जहां स्थिति ऊपर जाने के दौरान किए गए बदलाव को वापस डाउन ऐरो की ज़रूरत होती है.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
ज़्यादा जानकारी के लिए, लाइफ़साइकल इवेंट पर कोड चलाएं लेख पढ़ें.
लाइफ़साइकल स्टेट ऑब्ज़रवबिलिटी
- मौजूदा
Lifecycle.State
को अबLifecycle.currentStateFlow
प्रॉपर्टी की मदद से देखा जा सकता है. इससे,StateFlow
वैल्यू मिलती है, जहांvalue
मौजूदाLifecycle.State
है. - Jetpack Compose के उपयोगकर्ता
Lifecycle.currentStateAsState()
एक्सटेंशन का इस्तेमाल करके,Lifecycle.State
को सीधे तौर पर लिखेंState
के तौर पर दिखा सकते हैं. यहlifecycle.currentStateFlow.collectAsState()
के बराबर (और इससे छोटा विकल्प) है.
ज़्यादा जानकारी के लिए, फ़्लो के साथ लाइफ़साइकल की स्थिति को इकट्ठा करना देखें.
वर्शन 2.7.0-rc02
13 दिसंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
रिलीज़ हो गया है. वर्शन 2.7.0-rc02 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से
SavedStateHandle
, पूरी प्रोसेस के बंद होने और मनोरंजन के बाद की गईParcelable
क्लास को सही तरीके से पहले जैसा नहीं कर पाता था. Android फ़्रेमवर्क से मिलने वाली टाइप की जानकारी की वजह से, पसंद के मुताबिक पार्स किए जा सकने वाले पार्स किए जा सकने वाले एलिमेंट के कलेक्शन में अतिरिक्त काम करना पड़ता है. इसके लिए, सही टाइप का अरे मैन्युअल तरीके से बनाना होगा. साथ ही,get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब खास तौर पर इसकी जानकारी दी जा रही है. (I0b55a)
वर्शन 2.7.0-rc01
15 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- अगर
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
फ़ील्ड मेंcurrentState
फ़ील्ड का इस्तेमाल करके,Lifecycle.State
को सेट करने से बचने के लिए,lifecycle-runtime-testing
में अब एक नया लिंट चेक मौजूद है.TestLifecycleOwner
लिंट की जांच से अब आपको निलंबित किए जाने वालेsetCurrentState
का सुझाव मिलता है. इससेLifecycle.State
को ब्लॉक किए बिना सेट किया जा सकता है. (Icf728, b/297880630)
गड़बड़ियां ठीक की गईं
LiveData.switchMap
से जुड़ी समस्या ठीक की गई है, जहां शुरुआती कॉल और बाद के कॉल, दोनों में एक हीLiveData
इंस्टेंस लौटाने पर,LiveData
इंस्टेंस को सोर्स के तौर पर नहीं जोड़ा जा सकेगा. (Ibedcba7)
वर्शन 2.7.0-alpha02
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
TestLifecycleOwner
में अब सस्पेंडिंग फ़ंक्शनsetCurrentState()
शामिल है, ताकि उपयोगकर्ताओं कोrunTest
के ज़रिए दिए गए कोरूटीन में सेTestLifecycleOwner
का इस्तेमाल करने का विकल्प मिल सके. (I329de, b/259344129)
एपीआई में बदलाव
lifecycle-livedata-ktx
मॉड्यूल की सभी फ़ाइलों को मुख्यlifecycle-livedata
मॉड्यूल में ले जाया गया है. (I10c6f, b/274800183)
व्यवहार में होने वाले बदलाव
- अगर पिछले
LiveData
में कोई वैल्यू सेट थी, तोLiveData.map()
औरLiveData.switchMap()
एक्सटेंशन, अब लौटाए गएLiveData
केvalue
को सेट करते हैं. इससे यह पक्का होता है कि Jetpack Compose में नतीजे के तौर पर मिले LiveData का इस्तेमाल, शुरुआती कंपोज़िशन को सही तरीके से करने के लिए किया गया है. (I91d2b, b/269479952) - अगर
ViewModel
कोonCleared()
पर पहले ही कॉल आ चुका है, तोViewModel
काaddCloseable()
तुरंतCloseable
को बंद कर देगा. (I4712e, b/280294730)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.6.2
से: उस समस्या को ठीक किया गया है जिसमें प्रोसेस पूरी न होने के बाद,SavedStateHandle
को सही तरीके से वापस नहीं लाया जा सकेगा. ऐसा तब किया जाएगा, जब स्टेटस को पहले जैसा किया जाए. साथ ही, पैरंटSavedStateRegistry
में स्टेट को सेव किए बिना,save()
को कॉल किया गया था और उसके बाद स्थिति को फिर से पहले जैसा किया गया था. यह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
के ज़रिए कंपोज़ किया जा सकता है. इससेStateFlow
मिलता है, जहांvalue
मौजूदाLifecycle.State
है. (Ib212d, b/209684871)Lifecycle.Event
को अबLifecycle.asFlow().
(If2c0f, b/176311030) के साथFlow
के तौर पर देखा जा सकता हैLifecycle.Event.ON_RESUME
औरLifecycle.Event.ON_PAUSE
इवेंट कॉलबैक के आधार पर, कंपोज़SideEffect
चलाने के लिएLifecycleResumeEffect
एपीआई जोड़ा गया है. (I60386, b/235529345)Lifecycle.Event.ON_START
औरLifecycle.Event.ON_STOP
इवेंट कॉलबैक के आधार पर, कंपोज़SideEffect
चलाने के लिएLifecycleStartEffect
एपीआई जोड़ा गया है. (I5a8d1, b/235529345)Lifecycle.Event
के आधार पर, कंपोज़SideEffect
चलाने के लिएLifecycleEventEffect
एपीआई जोड़ा गया है. (Ic9794, b/235529345)Lifecycle.State
को सीधे तौर पर दिखाएंState
के तौर पर दिखाने के लिए,Lifecycle.collectAsState()
एक्सटेंशन जोड़ा गया है. यह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
में एक नया एक्सटेंशन जोड़ा गया. यह एक्सटेंशन, फ़्लो से जानकारी इकट्ठा करता है और लाइफ़साइकल के हिसाब से इसकी सबसे नई वैल्यू को कंपोज़ स्टेट के तौर पर दिखाता है.Lifecycle.launchWhenX
तरीके औरLifecycle.whenX
तरीके अब काम नहीं करते, क्योंकि डिस्पैचर को रोकने से कुछ मामलों में संसाधन की बर्बादी होती है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. एक बार के लिए निलंबित किए जाने वाले काम के बारे में ज़्यादा जानने के लिए, कृपया यह जानकारी देखें. इसमें बताया गया है कि यह प्रॉपर्टी पहले से सुरक्षित क्यों है.- Kotlin की कन्वर्ज़न - बड़ी संख्या में लाइफ़साइकल क्लास को Kotlin में बदल दिया गया है. बदली गई सभी क्लास, पिछले वर्शन के साथ अब भी बाइनरी तरीके से काम करती हैं. इन क्लास में Kotlin में लिखी गई क्लास के लिए सोर्स के साथ काम न करने वाले बदलाव हैं:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
नीचे दी गई टेबल में, लाइफ़साइकल के नए वर्शन के लिए सोर्स कन्वर्ज़न दिए गए हैं.
लाइफ़साइकल 2.5 | लाइफ़साइकल 2.5 (KTX) | लाइफ़साइकल 2.6 |
---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin में बनाए गए
Observer
केonChanged
तरीके की शून्येबिलिटी, अब जेनरिक टाइप की शून्येबिलिटी से मेल खाती है. अगर आपकोObserver.onChanged()
को शून्य करने लायक टाइप स्वीकार करना है, तो आपकोObserver
को शून्य करने लायक टाइप के साथ इंस्टैंशिएट करना होगा. - इन क्लास को Kotlin में भी बदला गया था, लेकिन ये सोर्स के साथ काम करती हैं:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
वर्शन 2.6.0-rc01
22 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- अगर पिछले
LiveData
के लिए कोई वैल्यू सेट थी, तोLiveData.distinctUntilChanged()
एक्सटेंशन अब रिटर्न किए गएLiveData
केvalue
को सेट करता है. इससे निगरानी के व्यवहार में कोई बदलाव नहीं होता - सोर्सLiveData
से अपडेट की गई वैल्यू सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()
से मिलेLiveData
को देखना शुरू किया जा रहा हो. (Ib482f)
वर्शन 2.6.0-beta01
8 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये कमिट हैं.
Kotlin कन्वर्ज़न
LifecycleOwner
अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई क्लास के लिए, सोर्स के साथ काम न करने वाला बदलाव है - उन्हें पिछलेgetLifecycle()
फ़ंक्शन को लागू करने के बजाय, अबlifecycle
प्रॉपर्टी को बदलना होगा. (I75b4b, b/240298691)ViewModelStoreOwner
अब Kotlin में है. यह Kotlin में लिखी गई क्लास के लिए, सोर्स के साथ काम न करने वाला बदलाव है - उन्हें पिछलेgetViewModelStore()
फ़ंक्शन को लागू करने के बजाय, अबviewModelStore
प्रॉपर्टी को बदलना होगा. (I86409, b/240298691)LifecycleOwner
परlifecycleScope
फ़ील्ड की जानकारी देने वाले Kotlin एक्सटेंशन को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
पर कभी भी किसी वैल्यू को साफ़ तौर पर सेट किया गया है या नहीं. इससे,null
रिटर्न करने वालेliveData.value
के बीच अंतर किया जा सकता है, क्योंकि न तो कभी कोई वैल्यू सेट की गई थी या न ही कोई साफ़ तौर परnull
वैल्यू सेट की गई थी. (Ibd018)
एपीआई में बदलाव
lifecycle-runtime-compose
केcollectAsStateWithLifecycle()
एपीआई, अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)Lifecycle.launchWhenX
तरीके औरLifecycle.whenX
तरीके अब काम नहीं करते, क्योंकि डिस्पैचर को रोकने से कुछ मामलों में संसाधन की बर्बादी होती है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. (IAFS54, 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) I59a23) में लिखे गए हैं
गड़बड़ियां ठीक की गईं
- गलत क्लास के साथ
get()
को कॉल करने पर,SavedStateHandle
अबClassCastException
से क्रैश नहीं होता टाइप करें. (I6ae7c)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- अलग-अलग लाइफ़साइकल मॉड्यूल के बीच, कंस्ट्रेंट से जुड़ी समस्या ठीक की गई है, जो उम्मीद के मुताबिक काम नहीं कर रही है. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
से मिलने वाली गड़बड़ियां, अब गड़बड़ी के मैसेज में ज़्यादा मददगार होती हैं. इससे डेवलपर को कॉम्पोनेंट के बारे में जानकारी मिलती है, जिसकी वजह से गड़बड़ी होती है. (Idf4b2, b/244910446)
वर्शन 2.6.0-alpha02
7 सितंबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये कमियां हैं.
एपीआई में बदलाव
MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए, एक कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)
गड़बड़ियां ठीक की गईं
Lifecycle
आर्टफ़ैक्ट में अब कंस्ट्रेंट शामिल हैं, जो यह पक्का करते हैं कि सभी इंटर-डिपेंडेंट लाइफ़साइकल आर्टफ़ैक्ट एक ही वर्शन का इस्तेमाल करें. कोई वर्शन अपग्रेड होने पर, अन्य डिपेंडेंसी अपने-आप अपग्रेड हो जाती हैं. b/242871265FlowLiveData.asFlow()
, यह पक्का करने के लिए अपनेChannel
लागू करने के बजाय, अबcallbackFlow
बनाता है थ्रेड-सुरक्षा और कॉन्टेक्स्ट को सुरक्षित रखने की सुविधा. (I4a8b2, b/200596935)FlowLiveData
काasLiveData
फ़ंक्शन अबStateFlow
बनाते समय शुरुआती वैल्यू को सुरक्षित रखेगा नयाLiveData
ऑब्जेक्ट. (I3f530, b/157380488)- लाइफ़साइकल
2.5.1
से:AndroidViewModelFactory
को कस्टम तरीके से लागू करने पर, अबLifecycle
2.4+ (I5b315, b/238011621) के साथ स्टेटफ़ुल कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल किया जाता है
वर्शन 2.6.0-alpha01
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
collectAsStateWithLifecycle
केStateFlow
औरFlow
पर एक नया एक्सटेंशन जोड़ा गया. यह एक्सटेंशन, फ़्लो से इकट्ठा करता है और इसकी सबसे नई वैल्यू को कंपोज़ स्टेट के तौर पर, लाइफ़साइकल की जानकारी के हिसाब से दिखाता है. किसी फ़्लो को इकट्ठा किया जाता है और नए उत्सर्जन को स्टेट की वैल्यू पर सेट किया जाता है. ऐसा तब होता है, जब लाइफ़साइकल कम से कम किसी तयLifecycle.State
में हो. जब लाइफ़साइकलLifecycle.State
से कम हो जाता है, तो फ़्लो कलेक्शन रुक जाता है और स्टेट की वैल्यू अपडेट नहीं होती. (I1856e, b/230557927)
वर्शन 2.5
वर्शन 2.5.1
27 जुलाई, 2022
androidx.lifecycle:lifecycle-*:2.5.1
रिलीज़ हो गया है. वर्शन 2.5.1 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
Lifecycle
2.4+ के साथ स्टेटफ़ुलAndroidViewModelFactory
कंस्ट्रक्टर का इस्तेमाल करते समय,AndroidViewModelFactory
को कस्टम तरीके से लागू करने पर,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल किया जाता है. (I5b315, b/238011621)
वर्शन 2.5.0
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0
रिलीज़ हो गया है. वर्शन 2.5.0 में ये कमियां शामिल हैं.
2.4.0 के बाद से हुए अहम बदलाव
SavedStateHandle
, अबgetStateFlow()
एपीआई की सुविधा देता है. यह वैल्यू में हुए बदलावों को मॉनिटर करने के लिए,LiveData
के इस्तेमाल के विकल्प के तौर पर KotlinStateFlow
दिखाता है.ViewModel CreationExtras - कस्टम
ViewModelProvider.Factory
लिखते समय,Application
याSavedStateHandle
का ऐक्सेस पाने के लिए अबAndroidViewModelFactory
याAbstractSavedStateViewModelFactory
को बढ़ाना ज़रूरी नहीं है. इसके बजाय, ये फ़ील्ड हरViewModelProvider.Factory
सब-क्लास कोCreationExtras
के तौर पर उपलब्ध कराए जाते हैं. ऐसाcreate
के नए ओवरलोड के ज़रिए किया जाता है:create(Class<T>, CreationExtras)
. गतिविधि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 में इंजेक्ट किया जा सकता है, लेकिन टेस्टिंग से कंट्रोल किया जा सकता है,
Closeable
को लागू करने वालाCoroutineScope
बनाया जा सकता है:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
इसका इस्तेमाल आपके
ViewModel
कंस्ट्रक्टर में किया जा सकता है. साथ ही, यहviewModelScope
की तरह ही लाइफ़टाइम में इस्तेमाल किया जा सकता है:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
सेDESTROYED
पर ले जाने की कोशिश करने पर, अब आपको हमेशाIllegalStateException
मिलेगा यह पता लगाने के लिए किLifecycle
में एक ऑब्ज़र्वर अटैच है या नहीं.- अब
LifecycleRegistry
केDESTROYED
राज्य में पहुंचने पर, ऑब्ज़र्वर को हटा दिया जाएगा.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- कंपाइल ओनली लाइफ़साइकल डिपेंडेंसी के पिछले वर्शन को 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
(I8bb86, b/225014345) में मौजूदा स्थिति के लिए, प्रॉपर्टी नामों का इस्तेमाल करने के लिएSavedStateHandle.saveable
प्रॉपर्टी डेलिगेट के लोगों को जोड़ा गया
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, नॉन-प्राइमरी बॉटम नेविगेशन टैब में, एक
NavHost
को दूसरेNavHost
में नेस्ट करने पर, एक से ज़्यादा बैक स्टैक का इस्तेमाल करने परIllegalStateException
दिखता है. (I11bd5, b/228865698)
वर्शन 2.5.0-alpha06
6 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
रिलीज़ हो गया है. वर्शन 2.5.0-alpha06 में ये कमिट हैं.
नई सुविधाएं
- इसके लिए
SavedStateHandle.saveable
में प्रयोग के तौर परMutableState
ओवरलोड जोड़ेंrememberSaveable
(I38cfe, b/224565154) के साथ समानता
एपीआई में बदलाव
CreationExtras
को अब सील करने के बजाय ऐब्स्ट्रैक्ट है. (Ib8a7a)
गड़बड़ियां ठीक की गईं
SavedStateHandleController
की वजह से हुईIllegalStateException: Already attached to lifecycleOwner
गड़बड़ी ठीक की गई. (I7ea47, b/215406268)
वर्शन 2.5.0-alpha05
23 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
रिलीज़ हो गया है. वर्शन 2.5.0-alpha05 में ये कमियां हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
मॉड्यूल में अबSavedStateHandleSaver
की सुविधा उपलब्ध है. यह एक ऐसा प्रयोग है जो यह पक्का करता है किSavedStateHandle
में मौजूद वैल्यू, सेव की गई उसी इंस्टेंस स्थिति के साथ सही तरीके से इंटिग्रेट की गई हैं जिसका इस्तेमालrememberSaveable
करता है. (Ia88b7, b/195689777)
एपीआई में बदलाव
- Java में Lifecycle 2.3 और नए लाइफ़साइकल वर्शन के साथ काम करने से जुड़ी समस्या को ठीक किया गया है. (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()
एपीआई की सुविधा देता है. यह वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए, KotlinStateFlow
दिखाता हैLiveData
का इस्तेमाल करने का विकल्प है. (Iad3ab, b/178037961)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये कमियां हैं.
नई सुविधाएं
addCloseable()
एपीआई और नया कंस्ट्रक्टर ओवरलोड जो आपको एक या उससे ज़्यादा फ़ाइलें जोड़ने की अनुमति देता हैViewModel
के लिएCloseable
ऑब्जेक्ट, जो बिना ज़रूरत केViewModel
के हटने पर बंद हो जाता हैonCleared()
में मैन्युअल तरीके से किया गया कोई काम. (I55ea0)lifecycle-viewmodel
अब यह मुहैया कराता हैInitializerViewModelFactory
, जो आपको हैंडलिंग के लिए लैम्डा जोड़ने की अनुमति देता है खासViewModel
क्लास, जिनमेंCreationExtras
को मुख्य डेटा के तौर पर इस्तेमाल किया जा रहा है स्रोत. (If58fc, b/216687549)lifecycle-viewmodel-compose
अबviewModel()
एपीआई उपलब्ध कराता है बिना किसीViewModel
इंस्टेंस बनाने के लिए, Lambda फ़ैक्ट्री कस्टमViewModelProvider.Factory
बनाना ज़रूरी है. (I97fbb, b/216688927)
एपीआई में बदलाव
- अब आप
CreationExtras
का इस्तेमाल करके,ViewModel
बना सकते हैं. इसके लिए, ये तरीके अपनाएं:lifecycle-viewmodel-compose
. (I08887, b/216688927)
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
से, यहां ले जाने की कोशिश की जा रही हैDESTROYED
अब हमेशाIllegalStateException
फेंकेगा यह पता लगाने के लिए किLifecycle
में एक ऑब्ज़र्वर अटैच है या नहीं. (I7c390, b/177924329)LifecycleRegistry
अब अपने ऑब्ज़र्वर को हटा देगा, जब वेDESTROYED
राज्य तक पहुंचें. (I4f8dd, b/142925860)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये कमियां हैं.
एपीआई में बदलाव
SavedStateHandle
औरSavedStateViewModelFactory
को Kotlin में बदल दिया गया है. इससे दोनों क्लास में जेनरिक की शून्य क्षमता बेहतर हो गई है. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
फ़ंक्शन पैरामीटर ये काम कर सकता है अब एक शून्य होने वाला आउटपुट है. (I40396, b/132923666)LiveData
-ktx एक्सटेंशन के साथ अब एनोटेट किया गया है@CheckResult
यह लागू करने के लिए कि इन कॉल के दौरान नतीजे का इस्तेमाल किया जाए फ़ंक्शन. (Ia0f05, b/207325134)
व्यवहार में बदलाव
SavedStateHandle
अब डिफ़ॉल्ट वैल्यू को सही तरीके से सेव करता है, जब बताई गई कुंजी के लिए कोई मान मौजूद नहीं है. (I1c6ce, b/178510877)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.4.1
से: स्टार्टअप 1.1.1 पर निर्भर रहने के लिएlifecycle-process
को अपडेट किया गया. इससे यह पक्का किया जा सकेगा कि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)- डिफ़ॉल्ट लाइफ़साइकल ऑब्ज़र्वर को
androidx.lifecycle.lifecycle-common-java8
से यहां ले जाया गयाandroidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
अबandroidx.lifecycle.lifecycle-common
के अलावा कोई अतिरिक्त सुविधा नहीं देता. इसलिए, इस पर डिपेंडेंसी कोandroidx.lifecycle.lifecycle-common
से बदला जा सकता है. (I021aa) lifecycle-viewmodel-ktx
से Non Coroutines API को यहां ले जाया गयाlifecycle-viewmodel
मॉड्यूल. (I6d5b2)
बाहरी योगदान
वर्शन 2.4.0-alpha03
4 अगस्त, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये कमियां हैं.
एपीआई में बदलाव
- सोर्स ब्रेकिंग बदलाव: ViewModelProvider को Kotlin में फिर से लिखा गया है.
ViewModelProvider.Factory.create
तरीका अब शून्य करने लायक नहीं है जेनरिक. (I9b9f6)
व्यवहार में होने वाले बदलाव
- एक्ज़ीक्यूशन को दोहराते समय,
Lifecycle.repeatOnLifecycle
:block
को अब हमेशा क्रम से लागू किया जाता है. (Iबाबा33)
बाहरी योगदान
वर्शन 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
लिंट की जांच को बेहतर बनाने के लिए, kozazaxinon को धन्यवाद. (#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
API का इस्तेमाल करके, लाइफ़साइकल के किसी खास स्टेटस में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है. यह नएLifecycleOwner.addRepeatinJob
एपीआई का भी एक विकल्प है. (I0f4cd)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल 2.3.1 से:
NonNullableMutableLiveData
लिंट नियम अब सही तरीके से काम कर सकता है शून्यता की अलग-अलग वैल्यू वाले फ़ील्ड वैरिएबल के बीच अंतर करें. (b/169249668)
लाइफ़साइकल व्यूमॉडल कंपोज़ वर्शन 1.0.0
वर्शन 1.0.0-alpha07
16 जून, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये कमिट हैं.
तीसरे पक्ष के एपीआई में हुए बदलाव
viewModel()
को अब वैकल्पिकViewModelStoreOwner
, जो काम करने में आसान बनाता हैLocalViewModelStoreOwner
के अलावा अन्य स्वामी के साथ. उदाहरण के लिए, अब किसी खास नेविगेशन ग्राफ़ से जुड़े ViewModel को वापस पाने के लिए,viewModel(navBackStackEntry)
का इस्तेमाल किया जा सकता है. (I2628d, b/188693123)
वर्शन 1.0.0-alpha06
2 जून, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये कमियां हैं.
इस वर्शन को कंपोज़ वर्शन 1.0.0-beta08
के साथ काम करने के लिए अपडेट किया गया है.
वर्शन 1.0.0-alpha05
18 मई, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमियां हैं.
नई सुविधाएं
- इस वर्शन को कंपोज़ वर्शन
1.0.0-beta07
के साथ काम करने के लिए अपडेट किया गया है.
गड़बड़ियां ठीक की गईं
- ui-test-मेनिफ़ेस्ट से और ui-tooling-data, अब Android 12 (I6f9de, b/184718994) के साथ काम करता है
वर्शन 1.0.0-alpha04
7 अप्रैल, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमियां हैं.
डिपेंडेंसी में बदलाव
- इस वर्शन में,
androidx.hilt:hilt-navigation-compose
औरandroidx.navigation:navigation-compose
इस्तेमाल करने की अनुमति हैandroidx.compose.compiler:compiler:1.0.0-beta04
औरandroidx.compose.runtime:runtime:1.0.0-beta04
पर डिपेंडेंसी सिंक करने के लिए. 1.0.0 के लिए, कंपाइलर और रनटाइम का मैच होना ज़रूरी है.
वर्शन 1.0.0-alpha03
10 मार्च, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये कमियां हैं.
एपीआई में बदलाव
LocalViewModelStoreOwner.current
अब नतीजे के तौर पर अमान्यViewModelStoreOwner
मौजूदा समय मेंViewModelStoreOwner
उपलब्ध है या नहीं कंपोज़िशन. ऐसे एपीआई जिनके लिएViewModelStoreOwner
की ज़रूरत होती है, जैसेviewModel()
औरNavHost
के तौर पर अपलोड करें, फिर भी अपवाद जोड़ें अगरViewModelStoreOwner
सेट नहीं है. (Idf39a)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha02
24 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये कमियां हैं.
एपीआई में बदलाव
LocalViewModelStoreOwner
में अबprovides
फ़ंक्शन मौजूद हैं, जो इसेCompositionLocalProvider
के साथ इस्तेमाल किया जाएगा और यहasProvidableCompositionLocal()
एपीआई की जगह इस्तेमाल किया जाएगा. (I45d24)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha01
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
androidx.lifecycle.viewmodel.compose
पैकेज में,viewModel()
कंपोज़ेबल औरLocalViewModelStoreOwner
कोandroidx.compose.ui.viewinterop
से इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)
वर्शन 2.3.1
लाइफ़साइकल वर्शन 2.3.1
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.3.1
रिलीज़ हो गया है. वर्शन 2.3.1 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट नियम अब ठीक से काम कर सकता है शून्यता की अलग-अलग वैल्यू वाले फ़ील्ड वैरिएबल के बीच अंतर करें. (b/169249668)
वर्शन 2.3.0
वर्शन 2.3.0
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-*:2.3.0
रिलीज़ हो गया है. वर्शन 2.3.0 में ये कमियां शामिल हैं.
2.2.0 से अब तक के बड़े बदलाव
SavedStateHandle
पार्स नहीं की जा सकने वाली क्लास के लिए सहायता:SavedStateHandle
अब किसी दी गई कुंजी के लिए,setSavedStateProvider()
को कॉल करने की अनुमति देकर लेज़ी सीरियलाइज़ेशन की सुविधा देता है. साथ ही,SavedStateProvider
की मदद से,SavedStateHandle
को उसकी स्थिति सेव करने के लिएsaveState()
पर कॉलबैक करने की सुविधा मिलती है. पार्स नहीं की जा सकने वाली क्लास सेव करना देखें.- लाइफ़साइकल बिहेवियर एनफ़ोर्समेंट:
- LifecycleRegistry, अब
DESTROYED
को टर्मिनल स्टेट के तौर पर लागू करता है. LifecycleRegistry
अब पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है या नहीं. गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए यह हमेशा ज़रूरी था. गैर-मुख्य थ्रेड से ऑब्ज़र्वर जोड़ने की वजह से, रनटाइम के दौरान क्रैश का पता लगाना मुश्किल हुआ. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, आपको यह पक्का करना होगा कि जब इसLifecycleRegistry
को अलग-अलग थ्रेड से ऐक्सेस किया जाता है, तब सही सिंक हो रहा हो.
- LifecycleRegistry, अब
- लाइफ़साइकल की स्थिति और इवेंट हेल्पर:
State
और ट्रांज़िशन की दिशा के हिसाब सेEvent
जनरेट करने के लिए,downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
सेLifecycle.Event
में स्टैटिक हेल्पर तरीके जोड़े गए. वहgetTargetState()
तरीका जोड़ा गया जोState
देता है, जिससे लाइफ़साइकल,Event
के बाद वाले चरण में सीधे ट्रांज़िशन करेगा. withStateAtLeast
: ऐसेLifecycle.withStateAtLeast
एपीआई जोड़े गए जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं और स्थिति बदलने पर, कोड के बिना निलंबित किए गए ब्लॉक को सिंक्रोनस रूप से चलाते हैं. इसके बाद, नतीजे के साथ फिर से शुरू करें. ये एपीआई, मौजूदाwhen*
तरीकों से अलग हैं, क्योंकि वे निलंबित करने के कोड को चलाने की अनुमति नहीं देते और किसी कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)ViewTree
एपीआई: नयाViewTreeLifecycleOwner.get(View)
औरViewTreeViewModelStoreOwner.get(View)
एपीआई,View
इंस्टेंस दिए गए होने पर, आपकोLifecycleOwner
औरViewModelStoreOwner
को शामिल करने वाले डेटा को वापस लाने की अनुमति देता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको गतिविधि1.2.0
और फ़्रैगमेंट1.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 (Id6471, b/165307851, b/165300826) का इस्तेमाल करने के लिए, androidx को अपग्रेड करें
दस्तावेज़ों में हुए बदलाव
liveData
बिल्डर औरasLiveData()
दस्तावेज़ों को अपडेट किया गया है, ताकि दी गई टाइम आउट की वैल्यू को बदलने के बारे में जानकारी शामिल की जा सके. (aosp/1122324)
वर्शन 2.3.0-alpha07
19 अगस्त, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
रिलीज़ हो गया है. वर्शन 2.3.0-alpha07 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
लिंट जांच में क्रैश से जुड़ी समस्या ठीक की गई. (aosp/1395367)
वर्शन 2.3.0-alpha06
22 जुलाई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
रिलीज़ हो गया है. वर्शन 2.3.0-alpha06 में ये कमियां हैं.
नई सुविधाएं
State
और ट्रांज़िशन के निर्देश के हिसाब सेEvent
जनरेट करने के लिए,Lifecycle.Event
मेंdownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
के स्टैटिक हेल्पर तरीके जोड़े गए. वहgetTargetState()
तरीका जोड़ा गया जोState
देता है, जिससे लाइफ़साइकल,Event
के बाद वाले चरण में सीधे ट्रांज़िशन करेगा. (I00887)Lifecycle.withStateAtLeast
एपीआई जोड़े गए, जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं और स्थिति बदलने पर सिंक्रोनस रूप से कोड के बिना, निलंबित न किए गए ब्लॉक को चलाते हैं. इसके बाद, फिर से शुरू करें से संपर्क करें. ये एपीआई, मौजूदाwhen*
तरीकों से अलग हैं, क्योंकि वे निलंबित करने के कोड को चलाने की अनुमति नहीं देते और किसी कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)
व्यवहार में होने वाले बदलाव
- LifecycleRegistry, अब
DESTROYED
को टर्मिनल स्टेट के तौर पर लागू करता है. (I00887) LifecycleRegistry
अब पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है या नहीं. गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए यह हमेशा ज़रूरी था. गैर-मुख्य थ्रेड से ऑब्ज़र्वर जोड़ने की वजह से, रनटाइम के दौरान क्रैश का पता लगाना मुश्किल हुआ. अपने कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, आपको यह पक्का करना होगा कि जब इसLifecycleRegistry
को अलग-अलग थ्रेड से ऐक्सेस किया जाता है, तो सही सिंक हो जाए (Ie7280, b/137392809)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
में होने वाले क्रैश को ठीक किया गया. (b/159987480)lifecycle-livedata-core-ktx
(और खास तौर परNullSafeMutableLiveData
) के साथ बंडल किए गए, लिंट चेक के लिए,ObsoleteLintCustomCheck
को ठीक किया गया. (b/158699265)
वर्शन 2.3.0-alpha05
24 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
LiveData
अब फिर से अनुरोध करने के मामलों को बेहतर तरीके से हैंडल करता है. साथ ही,onActive()
याonInactive()
पर डुप्लीकेट कॉल की समस्या से बचाता है. (b/157840298)- Android Studio 4.1 कैनरी 6 या इसके बाद के वर्शन का इस्तेमाल करने पर, लिंट के जांच न होने की समस्या को ठीक किया गया है. (aosp/1331903)
वर्शन 2.3.0-alpha04
10 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट चेक में क्रैश को ठीक किया गया. (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
को वापस पाया जा सकता है. इसे सही तरीके से भरने के लिए आपको गतिविधि1.2.0-alpha05
, फ़्रैगमेंट1.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
आर्टफ़ैक्ट उपलब्ध है, जोLifecycleOwner
को लागू करने वालाTestLifecycleOwner
देता है. साथ ही, थ्रेड के लिए सुरक्षित म्यूटेबलLifecycle
देता है. (aosp/1242438)
गड़बड़ियां ठीक की गईं
lifecycle-runtime
आर्टफ़ैक्ट का अब पैकेज का यूनीक नाम है. (aosp/1187196)
वर्शन 2.2.0
ViewModel-सेव किए गए स्टेट वर्शन 2.2.0
5 फ़रवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये कमियां शामिल हैं.
Lifecycle 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
और अगरlifecycle-process
का इस्तेमाल कर रहे हैं, तोlifecycle-service
) के हिसाब से आर्टफ़ैक्ट इस्तेमाल करें. ऐसा इसलिए, क्योंकि आने वाले समय मेंlifecycle-extensions
की2.3.0
रिलीज़ नहीं होगी.ProcessLifecycleOwner
- 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)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, ऐंडर्स अर्लबर्ग को धन्यवाद! (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)
बाहरी योगदान
- समस्या हल करने में योगदान देने के लिए निकलस एंसमैन को धन्यवाद! (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
में कारोबार बढ़ाने में योगदान देने के लिए, निकलस ऐन्समैन का धन्यवाद! (aosp/1106073)
वर्शन 2.2.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- डिफ़ॉल्ट
ViewModelProvider.Factory
देने के लिए,ViewModelStoreOwner
लागू करने पर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
बिल्डर में, एक नया ओवरलोड जोड़ा गया. इसेDuration
टाइप के तौर परtimeout
पैरामीटर मिलता है
वर्शन 2.2.0-alpha01
7 मई, 2019
androidx.lifecycle:*:2.2.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
- इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं, जो लाइफ़साइकल और 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
को अपने-आप इंजेक्ट कर देगी. - AbstrackSavedStateViewModel अपनाएं को जोड़ा गया था. यह आपको अपने
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
गड़बड़ियां ठीक की गईं
- सिर्फ़ लागू करने के तरीके को बनाए रखने के लिए, LifecycleObserver ProGuard नियम को बनाया गया है, न कि सबइंटरफ़ेस b/71389427
- अस्पष्ट बनाने और छोटा करने की अनुमति देने के लिए, ViewModel प्रोगार्ड नियम तय किए गए हैं
AndroidX से पहले के वर्शन
लाइफ़साइकल के आने वाले AndroidX वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
वर्शन 1.1.1
21 मार्च, 2018
सिर्फ़ एक छोटा बदलाव: android.arch.core.util.Function
को arch:runtime
से arch:common
में ले जाया गया. इससे इसे रनटाइम डिपेंडेंसी के बिना इस्तेमाल किया जा सकता है, उदाहरण के लिए paging:common
में.
lifecycle:common
, lifecycle:runtime
पर निर्भर करता है. इसलिए, इस बदलाव का lifecycle:runtime
पर कोई असर नहीं पड़ेगा. यह सिर्फ़ ऐसे मॉड्यूल पर असर डालेगा जो सीधे तौर पर lifecycle:common
पर निर्भर करते हैं, जैसा कि पेजिंग करता है.
वर्शन 1.1.0
22 जनवरी, 2018
पैकेजिंग में बदलाव
अब नई, बहुत कम डिपेंडेंसी उपलब्ध हैं:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
एपीआई में बदलाव
- हटाए गए
LifecycleActivity
औरLifecycleFragment
को अब हटा दिया गया है - कृपया इसका इस्तेमाल करेंFragmentActivity
,AppCompatActivity
याFragment
का समर्थन करें. ViewModelProviders
औरViewModelStores
में@NonNull
एनोटेशन जोड़े गएViewModelProviders
कंस्ट्रक्टर अब काम नहीं करता है - कृपया सीधे इसके स्टैटिक तरीकों का इस्तेमाल करेंViewModelProviders.DefaultFactory
के इस्तेमाल पर रोक लगा दी गई है - कृपयाViewModelProvider.AndroidViewModelFactory
का इस्तेमाल करें- वापस पाने के लिए स्टैटिक
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
तरीका जोड़ा गया एक स्टैटिकFactory
, जोViewModel
औरAndroidViewModel
इंस्टेंस बनाने के लिए सही है.