लाइफ़साइकल

लाइफ़साइकल की जानकारी वाले कॉम्पोनेंट, किसी दूसरे कॉम्पोनेंट के लाइफ़साइकल स्टेटस में हुए बदलाव के जवाब में ऐक्शन करते हैं. जैसे, ऐक्टिविटी और फ़्रैगमेंट. इन कॉम्पोनेंट की मदद से, बेहतर तरीके से व्यवस्थित किया गया और अक्सर कम साइज़ वाला कोड बनाया जा सकता है. साथ ही, इस कोड को मैनेज करना भी आसान होता है.

इस टेबल में, androidx.lifecycle ग्रुप के सभी आर्टफ़ैक्ट की सूची होती है.

सह-प्रॉडक्ट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
lifecycle-* 2.8.7 - - 2.9.0-alpha08
lifecycle-viewmodel-compose 2.8.7 - - 2.9.0-alpha08
इस लाइब्रेरी को आखिरी बार 11 दिसंबर, 2024 को अपडेट किया गया था

डिपेंडेंसी का एलान करना

लाइफ़साइकल पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

वर्शन 2.9

वर्शन 2.9.0-alpha08

11 दिसंबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha08 रिलीज़ हो गया है. वर्शन 2.9.0-alpha08 में ये कमिट शामिल हैं.

नई सुविधाएं

  • सिस्टम प्रोसेस के बंद होने की नकल करने के लिए ViewModelScenario.recreate जोड़ें. इससे, टेस्ट में शामिल ViewModel और उससे जुड़े सभी कॉम्पोनेंट फिर से बन जाएंगे. (Id6a69, b/381063087)
  • LifecycleOwner और ViewModelStoreOwner इंस्टेंस, उनके findViewTree एपीआई की मदद से वापस लाए जा सकते हैं. अब इन्हें किसी व्यू के अलग-अलग पैरंट, जैसे कि ViewOverlay की मदद से हल किया जा सकता है. अलग-अलग व्यू के पैरंट के बारे में ज़्यादा जानकारी के लिए, कोर के रिलीज़ नोट या ViewTree.setViewTreeDisjointParent में दस्तावेज़ देखें. (I800f4)

एपीआई में हुए बदलाव

  • नाम और पैकेज के संगठन को SavedStateRegistryOwnerDelegate (I8c135, b/376026744) के मुताबिक बनाएं

गड़बड़ियां ठीक की गईं

  • यह लाइब्रेरी अब JSpecify nullness एनोटेशन का इस्तेमाल करती है, जो टाइप-इस्तेमाल के लिए हैं. Kotlin डेवलपर को सही तरीके से इस्तेमाल करने के लिए, कंपाइलर के इन आर्ग्युमेंट का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ie4340, b/326456246)
  • दस्तावेज़ ViewModel.onCleared को मिटाने का क्रम. (I586c7, b/363984116)

वर्शन 2.9.0-alpha07

13 नवंबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha07 रिलीज़ हो गया है. वर्शन 2.9.0-alpha07 में ये कमिट शामिल हैं.

Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करना

  • लाइफ़साइकल ViewModel SavedState अब KMP के साथ काम करता है. इससे, सामान्य कोड में SavedStateHandle का इस्तेमाल किया जा सकता है. (Ib6394, b/334076622)

KotlinX सीरियलाइज़ेशन के लिए सहायता

  • SavedState 1.3.0-alpha05 में जोड़ी गई KotlinX सीरियलाइज़ेशन की मदद से, हमने saved को लॉज़ी प्रॉपर्टी डिलीगेट के तौर पर लॉन्च किया है. इससे @Serializable क्लास को SavedStateHandle में आसानी से सेव किया जा सकता है. साथ ही, प्रोसेस के बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें कि saved डेलिगेट, init लैम्ब्डा को तब तक कॉल नहीं करेगा या SavedStateHandle में कुछ भी सेव नहीं करेगा, जब तक उसे ऐक्सेस नहीं किया जाता. (I47a88, b/376026744)

    @Serializable
    data class Person(val firstName: String, val lastName: String)
    
    class MyViewModel(handle: SavedStateHandle) : ViewModel() {
        var person by handle.saved { Person("John", "Doe") }
    
        fun onPersonChanged(person: Person) {
            this.person = person
        }
    }
    

एपीआई में हुए बदलाव

  • MutableStateFlow दिखाने के लिए, SavedStateHandle में getMutableStateFlow जोड़ें. यह नया फ़ंक्शन सिर्फ़ कुंजी के लिए है और इसका इस्तेमाल getLiveData के साथ नहीं किया जा सकता. एक ही स्टेटस को ऐक्सेस करने के लिए, दोनों का इस्तेमाल करने पर अपवाद मिलेगा. (I04a4f, b/375408415)

वर्शन 2.9.0-alpha06

30 अक्टूबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha06 रिलीज़ हो गया है. वर्शन 2.9.0-alpha06 में ये कमिट शामिल हैं.

व्यवहार में बदलाव

  • Lifecycle.DESTROYED स्टेटस, टर्मिनल स्टेटस है. Lifecycle को इस स्टेटस से किसी अन्य स्टेटस में ले जाने की कोशिश करने पर, अब IllegalStateException स्टेटस दिखेगा. (I116c4, b/370577987)
  • SavedStateHandle में अब कोई भी ऐसा SavedStateProvider.saveState() शामिल नहीं है जिसमें दिखाया गया Bundle खाली है. (I910b5, b/370577987)

गड़बड़ियां ठीक की गईं

  • Lifecycle.eventFlow अब Lifecycle के DESTROYED होने पर सही तरीके से पूरा हो जाता है (I293b2, b/374043130)

वर्शन 2.9.0-alpha05

16 अक्टूबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha05 को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 2.9.0-alpha05 में ये कमिट शामिल हैं.

वर्शन 2.9.0-alpha04

2 अक्टूबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha04 रिलीज़ हो गया है. वर्शन 2.9.0-alpha04 में ये कमिट शामिल हैं.

Kotlin Multiplatform

  • lifecycle-viewmodel-savedstate मॉड्यूल को अब KMP के साथ काम करने के लिए कॉन्फ़िगर किया गया है. ऐसा इसलिए किया गया है, ताकि आने वाले समय में रिलीज़ होने वाले कॉमन सोर्स सेट में SavedStateHandle जैसे एपीआई उपलब्ध कराए जा सकें. (I503ed, I48764, b/334076622)

वर्शन 2.9.0-alpha03

18 सितंबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha03 रिलीज़ हो गया है. वर्शन 2.9.0-alpha03 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.8.6 से: NullSafeMutableLiveData Lint की गड़बड़ी की वजह से, स्मार्ट कास्ट के लिए बेहतर सहायता मिलती है. इससे, गलत फ़ॉल्स पॉज़िटिव की समस्या से बचा जा सकता है. (85fed6, b/181042665)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.9.0-alpha02

4 सितंबर, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.8.5 से: कोड को छिपाने की सुविधा चालू करने के लिए, androidx.lifecycle.ReportFragment ProGuard के नियमों को अपडेट करें . (ff898e1)

बाहरी योगदान

  • androidx.compose.ui.platform.LocalLifecycleOwner को सामान्य सोर्स सेट (KMP) में ले जाएं. योगदान देने के लिए, JetBrains के Ivan Matkov को धन्यवाद. (8cd5d03)
  • लाइफ़साइकल 2.8.5 से: SavedStateHandle.saveable` एक्सटेंशन डेलिगेट अब शून्य वैल्यू के साथ काम करता है. योगदान देने के लिए, रोमन कालुकीविच को धन्यवाद. (0d78ea6)

वर्शन 2.9.0-alpha01

7 अगस्त, 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये कमिट शामिल हैं.

Kotlin Multiplatform

  • lifecycle-testing अब KMP के साथ काम करता है. (Iea41e)
  • linuxArm64 Kotlin मल्टीप्लैटफ़ॉर्म टारगेट (I139d3, b/338268719) के लिए सहायता जोड़ें

नई सुविधाएं

  • एक नया androidx.lifecycle:lifecycle-viewmodel-testing KMP आर्टफ़ैक्ट उपलब्ध है. इसमें ViewModels की अलग से जांच करने के लिए, ViewModelScenario क्लास उपलब्ध है. यह क्लास onCleared (सभी प्लैटफ़ॉर्म) और SavedStateHandle (सिर्फ़ Android) के साथ काम करती है. (337f68d, c9b3409, 9799a95c, b/264602919)
  • ViewModelProvider की मदद से ViewModel बनाना अब थ्रेड सेफ़ है; @MainThread एनोटेशन हटा दिए गए हैं. (Ifd978, b/237006831)

एपीआई में हुए बदलाव

  • बिना नाम वाले CreationExtras.Key ऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए, CreationExtras.Key() फ़ैक्ट्री फ़ंक्शन जोड़ें. (I970ee)
  • CreationExtras में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससे CreationExtras के साथ in, +=, और + का इस्तेमाल किया जा सकता है. (Ib4353)
  • CreationExtras अब equals, hashCode, और toString तरीके लागू करता है. (Ib4353)
  • NewInstanceFactory अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है. (d3d0892)
  • Kotlin लैंग्वेज के वर्शन 2.0 (I39df2) में, ऐप्लिकेशन को सुरक्षित तरीके से एक्सपोज़ करने के लिए, इनलाइन एक्सटेंशन प्रॉपर्टी

गड़बड़ियां ठीक की गईं

  • नए प्लैटफ़ॉर्म एपीआई के ऐक्सेस की मैन्युअल रूप से जानकारी देने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप होता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप होता है. जिन क्लाइंट ने AGP का इस्तेमाल नहीं किया है उन्हें D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (If6b4c, b/345472586)

वर्शन 2.8

वर्शन 2.8.7

30 अक्टूबर, 2024

androidx.lifecycle:lifecycle-*:2.8.7 रिलीज़ हो गया है. वर्शन 2.8.7 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • androidx.compose.ui.platform.LocalLifecycleOwner अब सामान्य सोर्स सेट (KMP) में उपलब्ध है. (6a3f5b3)
  • lifecycle-runtime-compose: desktop आर्टफ़ैक्ट हटा दिए गए और -jvmStubs और -linuxx64Stubs आर्टफ़ैक्ट जोड़ दिए गए. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये प्लेसहोल्डर हैं, ताकि Jetbrains Compose को काम करने में मदद मिल सके. (6a3f5b3)

वर्शन 2.8.6

18 सितंबर, 2024

androidx.lifecycle:lifecycle-*:2.8.6 रिलीज़ हो गया है. वर्शन 2.8.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NullSafeMutableLiveData Lint की गड़बड़ी की वजह से, स्मार्ट कास्ट के लिए बेहतर सहायता मिलती है. इससे गलत पहचान की समस्या से बचा जा सकता है. (85fed6, b/181042665)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.8.5

4 सितंबर, 2024

androidx.lifecycle:lifecycle-*:2.8.5 रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • कोड को छिपाने की सुविधा चालू करने के लिए, androidx.lifecycle.ReportFragment ProGuard के नियमों को अपडेट करें . (ff898e1)

बाहरी योगदान

  • SavedStateHandle.saveable एक्सटेंशन डेलिगेट अब ऐसी वैल्यू के साथ काम करता है जिनमें वैल्यू न होने की स्थिति भी शामिल हो सकती है. योगदान देने के लिए, रोमन कालुकीविच को धन्यवाद. (0d78ea6)

वर्शन 2.8.4

24 जुलाई, 2024

androidx.lifecycle:lifecycle-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • LiveData.asFlow() अब उन मामलों को सही तरीके से हैंडल करता है जहां LiveData पर पहले से सेट की गई वैल्यू मिलने के बाद, दिखाया गया फ़्लो तुरंत पूरा हो जाता है. उदाहरण के लिए, take(1) का इस्तेमाल करते समय. (I9c566)
  • Lifecycle*Effect को पूरा करने की प्रोसेस अब एक जैसी है.इसका मतलब है कि अगर लाइफ़साइकल के बंद होने की वजह से onStopOrDispose को कॉल किया गया था, तो उसे डिस्पोज़ल के बाद दूसरी बार कॉल नहीं किया जाएगा. ऐसा तब तक नहीं होगा, जब तक लाइफ़साइकल फिर से STARTED पर नहीं पहुंच जाता. (I5f607, b/352364595)

वर्शन 2.8.3

July 1, 2024

androidx.lifecycle:lifecycle-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • कोड को छोटा करने की सुविधा का इस्तेमाल करते समय, Lifecycle 2.8 के Compose 1.6.0 और उससे पहले के वर्शन के साथ काम करने से जुड़ी समस्या को ठीक किया गया. (aosp/3133056, b/346808608)

वर्शन 2.8.2

12 जून, 2024

androidx.lifecycle:lifecycle-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Compose 1.6.X या उससे पहले के वर्शन के साथ Lifecycle 2.8.X का इस्तेमाल करते समय आने वाली CompositionLocal LocalLifecycleOwner not present गड़बड़ियां ठीक की गईं - अब Compose के किसी भी वर्शन के साथ Lifecycle 2.8.2 का इस्तेमाल किया जा सकता है. इसके लिए, आपको कोई दूसरा तरीका अपनाने की ज़रूरत नहीं है. (aosp/3105647, b/336842920)
  • compileOnly लाइफ़साइकल डिपेंडेंसी के पिछले वर्शन को 2.8 और उसके बाद के वर्शन के साथ मिक्स करने पर, ViewModelProvider अब क्रैश नहीं होगा. साथ ही, LeakCanary जैसी लाइब्रेरी से जुड़ी समस्याएं भी ठीक हो जाएंगी. (I80383, b/341792251)

वर्शन 2.8.1

29 मई, 2024

androidx.lifecycle:lifecycle-*:2.8.1 रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अब lifecycle-viewmodel-compose सिर्फ़ compose-runtime पर डिपेंड करता है. compose-ui पर डिपेंड करने की उसकी सामान्य डिपेंडेंसी हटा दी गई है. Android आर्टफ़ैक्ट, काम करने के लिए अपना compose-ui बनाए रखता है. (aosp/3079334, b/339562627)
  • प्रॉपर्टी डेलीगेट का इस्तेमाल करके ViewModel के saveable इंटिग्रेशन में, अब अपने-आप जनरेट हुए पासकोड के हिस्से के तौर पर क्लास के नाम का इस्तेमाल किया जाता है. इससे, एक से ज़्यादा क्लास के एक ही SavedStateHandle का इस्तेमाल करने पर होने वाली गड़बड़ियों से बचा जा सकता है. (aosp/3063463)

वर्शन 2.8.0

14 मई, 2024

androidx.lifecycle:lifecycle-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये कमिट शामिल हैं.

2.7.0 के बाद किए गए अहम बदलाव

  • LocalLifecycleOwner को Compose यूज़र इंटरफ़ेस (यूआई) से lifecycle-runtime-compose पर ले जाया गया है, ताकि Compose पर आधारित हेल्पर एपीआई का इस्तेमाल, Compose यूज़र इंटरफ़ेस (यूआई) के बाहर किया जा सके.
  • lifecycle-runtime-compose आर्टफ़ैक्ट में अब dropUnlessResumed और dropUnlessStarted एपीआई शामिल हैं. इनकी मदद से, LifecycleOwner के तय किए गए Lifecycle.State से नीचे गिरने के बाद भी होने वाले क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. उदाहरण के लिए, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को हैंडल करने से बचने के लिए, इसका इस्तेमाल नेविगेशन कंपोज के साथ किया जा सकता है: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इसकी मदद से, अपना डिस्पैचर और SupervisorJob() इंजेक्ट किया जा सकता है. इसके अलावा, runTest में मौजूद backgroundScope का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • ViewModel को Kotlin में फिर से लिखा गया है और अब यह Closeable के बजाय AutoClosable का इस्तेमाल करता है. अब इसमें key के साथ AutoCloseable ऑब्जेक्ट जोड़े जा सकते हैं. इससे, उन्हें getCloseable() के ज़रिए वापस पाया जा सकता है.

  • अब बिना पासकोड के LifecycleStartEffect और LifecycleResumeEffect को कॉल करने पर गड़बड़ी का मैसेज दिखता है. यह वही तरीका है जो DisposableEffect एपीआई में इस्तेमाल किया जाता है.

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) की जगह अब LiveData.toPublisher(lifecycleOwner) का इस्तेमाल किया जाता है.

  • lifecycle-livedata-core-ktx Kotlin एक्सटेंशन को अब lifecycle-livedata-core मॉड्यूल में ले जाया गया है.

  • NullSafeMutableLiveData को फिर से तैयार किया गया है, ताकि फ़ॉल्स पॉज़िटिव की समस्या से बचा जा सके.

लाइफ़साइकल Kotlin के मल्टीप्लैटफ़ॉर्म वर्शन के साथ काम करने की सुविधा

Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event, और LifecycleRegistry में मौजूद लाइफ़साइकल के मुख्य एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं.

जिन आर्टफ़ैक्ट पर असर पड़ा:

  • lifecycle-common, ज़्यादातर एपीआई को common पर ले जाता है. साथ ही, यह Android के साथ-साथ jvm और iOS पर भी काम करता है.
  • lifecycle-runtime, ज़्यादातर एपीआई को common पर ले जाता है. साथ ही, यह Android के साथ-साथ jvm और iOS पर भी काम करता है.
  • lifecycle-runtime-ktx अब खाली है. सभी एपीआई को lifecycle-runtime में ले जाया जा रहा है.
  • lifecycle-runtime-compose सभी एपीआई को common पर ले जाता है और androidx.compose के मल्टीप्लैटफ़ॉर्म सपोर्ट से मैच करने वाला Android आर्टफ़ैक्ट शिप करता है.

ViewModel Kotlin के मल्टीप्लैटफ़ॉर्म के साथ काम करने की सुविधा

lifecycle-viewmodel आर्टफ़ैक्ट और ViewModel, ViewModelStore, ViewModelStoreOwner, और ViewModelProvider जैसे एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं.

इस बदलाव को लागू करने के लिए, ViewModelProvider पर मौजूद ऐसे तरीकों के लिए, अब एक ऐसा तरीका उपलब्ध है जो kotlin.reflect.KClass<T> लेता है. जैसे, java.lang.Class<T> लेना.

Android पर बाइनरी के साथ काम करने की सुविधा को बरकरार रखा गया है. हालांकि, Android API के प्लैटफ़ॉर्म की तुलना सामान्य API के प्लैटफ़ॉर्म से करने पर, कुछ अहम बदलाव दिखते हैं:

  • ViewModelProvider इंस्टेंस बनाने के लिए, अब सीधे तौर पर उसके कंस्ट्रक्टर को कॉल करने के बजाय, ViewModelProvider.create() तरीकों का इस्तेमाल किया जाता है.
  • ViewModelProvider.NewInstanceFactory और ViewModelProvider.AndroidViewModelFactory सिर्फ़ Android पर उपलब्ध हैं.
    • हमारा सुझाव है कि कस्टम फ़ैक्ट्री को ViewModelProvider.Factory से एक्सटेंड करें और create तरीके का इस्तेमाल करें. यह तरीका CreationExtras लेता है या viewModelFactory Kotlin DSL का इस्तेमाल करता है.
  • JVM प्लैटफ़ॉर्म के अलावा किसी दूसरे प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना ViewModelProvider का इस्तेमाल करने पर, UnsupportedOperationException दिखेगा. अगर कोई कस्टम फ़ैक्ट्री उपलब्ध नहीं कराई जाती है, तो JVM प्लैटफ़ॉर्म पर, बिना-आर्ग्युमेंट वाले ViewModel कन्स्ट्रक्टर का इस्तेमाल करके, काम करने की सुविधा को बनाए रखा जाता है.
  • viewModelScope, उन प्लैटफ़ॉर्म पर EmptyCoroutineContext पर फ़ॉलबैक करेगा जहां Dispatchers.Main उपलब्ध नहीं है (उदाहरण के लिए, Linux).

जिन आर्टफ़ैक्ट पर असर पड़ा:

  • lifecycle-viewmodel, ज़्यादातर एपीआई को common पर ले जाता है. साथ ही, यह Android के साथ-साथ jvm और iOS पर भी काम करता है.
  • lifecycle-viewmodel-ktx अब खाली है. सभी एपीआई को lifecycle-viewmodel में ले जाया जा रहा है.
  • lifecycle-viewmodel-compose सभी एपीआई को common पर ले जाता है और androidx.compose के मल्टीप्लैटफ़ॉर्म सपोर्ट से मैच करने वाला Android आर्टफ़ैक्ट शिप करता है.

व्यवहार में बदलाव

  • अगर clazz: KClass<VM : ViewModel> के साथ पहले से ही कोई initializer जोड़ा गया है, तो InitializerViewModelFactory (इसमें viewModelFactory बिल्डर फ़ंक्शन भी शामिल है) अब IllegalArgumentException दिखाएगा. (Ic3a36)

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • lifecycle-*:2.8.0 के लिए, Compose का कम से कम 1.7.0-alpha05 (b/336842920) वर्शन ज़रूरी है.

वर्शन 2.8.0-rc01

1 मई, 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • lifecycle-common क्लास के लिए, बेसलाइन प्रोफ़ाइल को सही तरीके से पैकेज न करने की समस्या को ठीक किया गया है. इन्हें अब lifecycle-runtime AAR में पैकेज किया गया है. (aosp/3038274, b/322382422)
  • ViewModel से जुड़े AutoCloseable इंस्टेंस को हटाने के तरीके में, क्रम से जुड़ा एक अनजाने में किया गया बदलाव ठीक किया गया है. addCloseable(String, AutoCloseable), addClosable(AutoCloseable), और onCleared() का पिछला क्रम वापस लाया गया है. (aosp/3041632)
  • नेटिव और JVM डेस्कटॉप एनवायरमेंट के लिए, viewModelScope बनाने के डिफ़ॉल्ट तरीके को बेहतर बनाएं. (aosp/3039221)

बाहरी योगदान

  • JVM डेस्कटॉप पर मुख्य थ्रेड की जांच को बेहतर बनाने के लिए, विक्टर क्रॉप का धन्यवाद. (aosp/3037116)

वर्शन 2.8.0-beta01

17 अप्रैल, 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये कमिट शामिल हैं.

नई सुविधाएं

  • lifecycle-runtime-compose आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसका कोड common में ले जाया जाता है और androidx.compose के लिए मल्टीप्लैटफ़ॉर्म की सुविधा के हिसाब से Android आर्टफ़ैक्ट शिप किया जाता है. (If7a71, I4f4a0, b/331769623)

वर्शन 2.8.0-alpha04

3 अप्रैल, 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये कमिट शामिल हैं.

नई सुविधाएं

  • lifecycle-viewmodel-compose आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके लिए, इसका कोड common में ले जाया जाता है. साथ ही, androidx.compose के मल्टीप्लैटफ़ॉर्म सपोर्ट से मैच करने वाला Android आर्टफ़ैक्ट शिप किया जाता है. इस बदलाव को ध्यान में रखते हुए, Composable viewModel का तरीका अब java.lang.Class के साथ-साथ KClass को भी स्वीकार करता है. (b/330323282)

गड़बड़ियां ठीक की गईं

  • NullSafeMutableLiveData को फिर से तैयार किया गया है, ताकि फ़ॉल्स पॉज़िटिव की समस्या से बचा जा सके. (I2d8c1, Iafb18, I03463, I7ecef)

डिपेंडेंसी अपडेट करना

  • lifecycle-viewmodel-compose आर्टफ़ैक्ट अब Compose 1.6.0 पर निर्भर करता है.
  • लाइफ़साइकल अब Profile Installer 1.3.1 पर निर्भर करता है.

वर्शन 2.8.0-alpha03

20 मार्च, 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये कमिट शामिल हैं.

नई सुविधाएं

  • ViewModel.viewModelScope अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इसकी मदद से, अपना डिस्पैचर और SupervisorJob() इंजेक्ट किया जा सकता है. इसके अलावा, runTest में मौजूद backgroundScope का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करना

lifecycle-viewmodel आर्टफ़ैक्ट और ViewModel, ViewModelStore, ViewModelStoreOwner, और ViewModelProvider जैसे एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं. (b/214568825)

इस बदलाव को लागू करने के लिए, ViewModelProvider पर मौजूद ऐसे तरीकों के लिए, अब एक ऐसा तरीका उपलब्ध है जो kotlin.reflect.KClass<T> लेता है. जैसे, java.lang.Class<T> लेना.

Android पर बाइनरी के साथ काम करने की सुविधा को बरकरार रखा गया है. हालांकि, Android API के प्लैटफ़ॉर्म की तुलना सामान्य API के प्लैटफ़ॉर्म से करने पर, कुछ अहम बदलाव दिखते हैं:

  • ViewModelProvider इंस्टेंस बनाने के लिए, अब सीधे तौर पर उसके कंस्ट्रक्टर को कॉल करने के बजाय, ViewModelProvider.create() तरीकों का इस्तेमाल किया जाता है.
  • ViewModelProvider.NewInstanceFactory और ViewModelProvider.AndroidViewModelFactory सिर्फ़ Android पर उपलब्ध हैं.
    • हमारा सुझाव है कि कस्टम फ़ैक्ट्री को ViewModelProvider.Factory से एक्सटेंड करें और create तरीके का इस्तेमाल करें. यह तरीका CreationExtras लेता है या viewModelFactory Kotlin DSL का इस्तेमाल करता है.
  • JVM प्लैटफ़ॉर्म के अलावा किसी दूसरे प्लैटफ़ॉर्म पर, कस्टम फ़ैक्ट्री के बिना ViewModelProvider का इस्तेमाल करने पर, UnsupportedOperationException दिखेगा. अगर कोई कस्टम फ़ैक्ट्री उपलब्ध नहीं कराई जाती है, तो JVM प्लैटफ़ॉर्म पर, बिना-आर्ग्युमेंट वाले ViewModel कन्स्ट्रक्टर का इस्तेमाल करके, काम करने की सुविधा को बनाए रखा जाता है.
  • viewModelScope, उन प्लैटफ़ॉर्म पर EmptyCoroutineContext पर फ़ॉलबैक करेगा जहां Dispatchers.Main उपलब्ध नहीं है (उदाहरण के लिए, Linux).

व्यवहार में बदलाव

  • अगर clazz: KClass<VM : ViewModel> के साथ पहले से ही कोई initializer जोड़ा गया है, तो InitializerViewModelFactory (इसमें viewModelFactory बिल्डर फ़ंक्शन भी शामिल है) अब IllegalArgumentException दिखाएगा. (Ic3a36)

गड़बड़ियां ठीक की गईं

  • ViewModel.getCloseable अब डुप्लीकेट कुंजियों को मैनेज करता है: अगर key से पहले से कोई AutoCloseable संसाधन जुड़ा है, तो पुराने संसाधन को तुरंत बदल दिया जाएगा और बंद कर दिया जाएगा. (Ibeb67)
  • ViewModel का viewModelScope ऐक्सेस करना अब थ्रेड सेफ़ है. (If4766, b/322407038)

बाहरी योगदान

  • LocalLifecycleOwner को Compose यूज़र इंटरफ़ेस (यूआई) से lifecycle-runtime-compose पर ले जाया गया है, ताकि Compose पर आधारित हेल्पर एपीआई का इस्तेमाल, Compose यूज़र इंटरफ़ेस (यूआई) के बाहर किया जा सके. योगदान देने के लिए, जेक व्हार्टन को धन्यवाद. (I6c41b, b/328263448)

वर्शन 2.8.0-alpha02

21 फ़रवरी, 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 रिलीज़ हो गया है. 2.8.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • dropUnlessResumed और dropUnlessStarted एपीआई जोड़े गए हैं. इनकी मदद से, LifecycleOwner के तय Lifecycle.State से नीचे आने के बाद भी होने वाले क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. उदाहरण के लिए, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को मैनेज करने से बचने के लिए, इसका इस्तेमाल नेविगेशन कंपोज़ के साथ किया जा सकता है: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Kotlin कन्वर्ज़न

  • ViewModel को अब Kotlin में लिखा गया है (I16f26, b/214568825)
  • lifecycle-viewmodel-ktx Kotlin एक्सटेंशन को अब लाइफ़साइकल के बुनियादी मॉड्यूल में ले जाया गया है. (Id787b, b/274800183)
  • lifecycle-runtime-ktx Kotlin एक्सटेंशन को अब लाइफ़साइकल के बुनियादी मॉड्यूल में ले जाया गया है. (Ic3686, b/274800183)
  • lifecycle-livedata-core-ktx Kotlin एक्सटेंशन को अब लाइफ़साइकल के बुनियादी मॉड्यूल में ले जाया गया है. (I54a3d, b/274800183)

Kotlin मल्टीप्लैटफ़ॉर्म के साथ काम करना

  • Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event, और LifecycleRegistry में मौजूद लाइफ़साइकल के मुख्य एपीआई, अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में शिप किए जाते हैं. (b/317249252)

एपीआई में हुए बदलाव

  • अब बिना पासकोड के LifecycleStartEffect और LifecycleResumeEffect को कॉल करने पर गड़बड़ी का मैसेज दिखता है. यह वही तरीका है जो DisposableEffect एपीआई में इस्तेमाल किया जाता है. (Ib0e0c, b/323518079)
  • ViewModel अब Closeable के बजाय AutoCloseable का इस्तेमाल करता है. यह बदलाव, पुराने सिस्टम के साथ काम करता है. (I27f8e, b/214568825)
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) की जगह अब LiveData.toPublisher(lifecycleOwner) का इस्तेमाल किया जाता है. (Iabe29, b/262623005)

बाहरी योगदान

  • Lifecycle को Kotlin Multiplatform पर ले जाने में मदद करने के लिए, Jetbrains के Ivan Matkov का धन्यवाद. (aosp/2926690, I0c5ac, If445d)

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 रिलीज़ हो गया है. 2.8.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • ViewModel में अब Closeable ऑब्जेक्ट को key के साथ जोड़ने की सुविधा है. इससे, getCloseable() की मदद से उन्हें वापस पाया जा सकता है. (I3cf63)

वर्शन 2.7

वर्शन 2.7.0

10 जनवरी, 2024

androidx.lifecycle:lifecycle-*:2.7.0 रिलीज़ हो गया है. 2.7.0 वर्शन में ये बदलाव शामिल हैं.

2.6.0 के बाद किए गए ज़रूरी बदलाव

  • TestLifecycleOwner में अब निलंबित करने वाला फ़ंक्शन setCurrentState() शामिल है. इससे यह पक्का होता है कि रिटर्न करने से पहले, स्टेटस में बदलाव और सभी LifecycleObserver कॉलबैक पूरे हो जाएं. ध्यान दें कि सीधे तौर पर currentState प्रॉपर्टी सेट करने के बजाय, इसमें runBlocking का इस्तेमाल नहीं किया जाता. इस वजह से, इसे runTest से मिलने वाले कोर्यूटीन में इस्तेमाल करना सुरक्षित होता है.
  • map और switchMap के LiveData एक्सटेंशन अब distinctUntilChanged के व्यवहार को दिखाते हैं - अगर LiveData में value सेट है, तो रिटर्न किए गए LiveData के value को पॉप्युलेट करने के लिए, map/switchMap फ़ंक्शन को तुरंत कॉल किया जाएगा. इससे यह पक्का होता है कि शुरुआती वैल्यू, observeAsState() के साथ इस्तेमाल करने पर, पहली कॉम्पोज़िशन के हिस्से के तौर पर सेट की जाएगी. हालांकि, इससे निगरानी के व्यवहार में कोई बदलाव नहीं होता. सोर्स LiveData से अपडेट की गई वैल्यू, तब भी सिर्फ़ तब लागू होंगी, जब LiveData को निगरानी में रखा जाएगा.
  • इस रिलीज़ में, एक समस्या को ठीक किया गया है. इस समस्या की वजह से, प्रोसेस के बंद होने और फिर से शुरू होने के बाद, SavedStateHandle कस्टम Parcelable क्लास को ठीक से वापस नहीं ला पाता था. Android फ़्रेमवर्क में टाइप की जानकारी मौजूद नहीं होती. इसलिए, कस्टम Parcelables के कलेक्शन के लिए ज़्यादा काम करना पड़ता है. जैसे, मैन्युअल तरीके से सही टाइप का कलेक्शन बनाना. get, getLiveData, और getStateFlow के दस्तावेज़ में अब खास तौर पर इस सीमा के बारे में बताया गया है.
  • LifecycleObserver से जुड़े, ProGuard के रखरखाव के नियम हटा दिए गए हैं. इसका मतलब है कि प्रोगर्ड किए गए ऐसे कोड को, रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करना होगा जो इस्तेमाल के खास उदाहरण के लिए, @OnLifecycleEvent एनोटेशन का इस्तेमाल करता है. इसके लिए, उन्हें अपने इस्तेमाल के उदाहरण के लिए, अपने हिसाब से नियम देने होंगे.

लाइफ़साइकल इवेंट को मॉनिटर करना

  • LifecycleEventObserver का इस्तेमाल करने के विकल्प के तौर पर, अब Lifecycle.asFlow() एक्सटेंशन के तरीके से Lifecycle.Event का Flow देखा जा सकता है.
  • Jetpack Compose के उपयोगकर्ता, अब Lifecycle.Event के आधार पर Compose के साइड इफ़ेक्ट चलाने के लिए, LifecycleEventEffect का इस्तेमाल कर सकते हैं.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Jetpack Compose के उपयोगकर्ता, इवेंट के जोड़े को मैनेज करने के लिए LifecycleStartEffect और LifecycleResumeEffect का इस्तेमाल कर सकते हैं. जैसे, शुरू होने से बंद होने तक और फिर से शुरू होने से रोके जाने तक. यह एपीआई, DisposableEffect में मौजूद एपीआई की तरह ही काम करता है. यह उन मामलों के लिए सही है जहां स्थिति में बदलाव होने पर, उसे वापस पहले जैसा करने की ज़रूरत होती है.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

ज़्यादा जानकारी के लिए, लाइफ़साइकल इवेंट पर कोड चलाना लेख पढ़ें.

लाइफ़साइकल की स्थिति को मॉनिटर करना

  • मौजूदा Lifecycle.State को अब Lifecycle.currentStateFlow प्रॉपर्टी की मदद से देखा जा सकता है. यह एक StateFlow दिखाती है, जिसमें value मौजूदा Lifecycle.State होता है.
  • Jetpack Compose के उपयोगकर्ता, Lifecycle.currentStateAsState() एक्सटेंशन का इस्तेमाल करके, Lifecycle.State को सीधे Compose State के तौर पर एक्सपोर्ट कर सकते हैं. यह lifecycle.currentStateFlow.collectAsState() के बराबर है और इसका विकल्प छोटा है.

ज़्यादा जानकारी के लिए, फ़्लो की मदद से लाइफ़साइकल की स्थिति इकट्ठा करना लेख पढ़ें.

वर्शन 2.7.0-rc02

13 दिसंबर, 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 रिलीज़ हो गया है. 2.7.0-rc02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, प्रोसेस के बंद होने और फिर से शुरू होने के बाद, SavedStateHandle कस्टम Parcelable क्लास को सही तरीके से वापस नहीं ला पाता था. Android फ़्रेमवर्क में टाइप की जानकारी मौजूद नहीं होती. इसलिए, कस्टम Parcelables के कलेक्शन के लिए ज़्यादा काम करना पड़ता है. जैसे, मैन्युअल तरीके से सही टाइप का कलेक्शन बनाना. get, getLiveData, और getStateFlow के दस्तावेज़ में अब खास तौर पर इस सीमा के बारे में बताया गया है. (I0b55a)

वर्शन 2.7.0-rc01

15 नवंबर, 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc01 रिलीज़ हो गया है. 2.7.0-rc01 वर्शन में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • LifecycleOwner में बदलाव होने पर, LifecycleStartEffect और LifecycleResumeEffect अब इफ़ेक्ट ब्लॉक को सही तरीके से हटाते और फिर से बनाते हैं. (Ia25c6)

वर्शन 2.7.0-beta01

1 नवंबर, 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01 को बिना किसी बदलाव के रिलीज़ किया जाता है. 2.7.0-beta01 वर्शन में ये बदलाव शामिल हैं.

  • बीटा वर्शन में बदलाव, रिलीज़ किए गए इस वर्शन में कोई बड़ा बदलाव नहीं किया गया है.

वर्शन 2.7.0-alpha03

18 अक्टूबर, 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 रिलीज़ हो गया है. 2.7.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • lifecycle-runtime-testing में अब एक नई Lint जांच शामिल है, ताकि कोरूटीन के अंदर currentState फ़ील्ड का इस्तेमाल करके, TestLifecycleOwner के Lifecycle.State को सेट करने से बचा जा सके. Lint की जांच करने पर, अब setCurrentState को निलंबित करने का सुझाव दिया जाता है. इससे Lifecycle.State को ब्लॉक किए बिना सेट किया जा सकता है. (Icf728, b/297880630)

गड़बड़ियां ठीक की गईं

  • LiveData.switchMap से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या की वजह से, शुरुआती कॉल और उसके बाद के कॉल में एक ही LiveData इंस्टेंस दिखाया जाता था. इससे, LiveData इंस्टेंस को सोर्स के तौर पर जोड़ने से रोका जाता था. (Ibedcba7)

वर्शन 2.7.0-alpha02

6 सितंबर, 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 रिलीज़ हो गया है. 2.7.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • TestLifecycleOwner में अब सस्पेंड करने वाला फ़ंक्शन setCurrentState() शामिल है. इससे उपयोगकर्ताओं को TestLifecycleOwner का इस्तेमाल, runTest से मिलने वाले कोरूटीन में करने का विकल्प मिलता है. (I329de, b/259344129)

एपीआई में हुए बदलाव

  • lifecycle-livedata-ktx मॉड्यूल की सभी फ़ाइलों को मुख्य lifecycle-livedata मॉड्यूल में ले जाया गया है. (I10c6f, b/274800183)

व्यवहार में बदलाव

  • अगर पिछले LiveData में कोई वैल्यू सेट की गई है, तो LiveData.map() और LiveData.switchMap() एक्सटेंशन, अब दिखाए गए LiveData का value सेट करेगा. इससे यह पक्का किया जा सकेगा कि Jetpack Compose में, नतीजे के तौर पर मिले LiveData का इस्तेमाल करते समय, शुरुआती कॉम्पोज़िशन में सही स्थिति हो. (I91d2b, b/269479952)
  • अगर ViewModel को पहले ही onCleared() पर कॉल मिल चुका है, तो ViewModel का addCloseable() अब तुरंत Closeable को बंद कर देता है. (I4712e, b/280294730)

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.6.2 से: एक समस्या को ठीक किया गया है. इसमें, प्रोसेस के बंद होने के बाद SavedStateHandle को सही तरीके से वापस नहीं लाया जा सकता था. ऐसा तब होता था, जब स्टेटस को वापस लाया जाता था, save() को पैरंट SavedStateRegistry में स्टेटस को सेव किए बिना कॉल किया जाता था, और फिर स्टेटस को फिर से वापस लाया जाता था. इससे, rememberSaveable और नेविगेशन कंपोज़ के NavHost के बीच इंटरैक्शन ठीक हो जाता है. (aosp/2729289)

वर्शन 2.7.0-alpha01

26 जुलाई, 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha01 रिलीज़ हो गया है. 2.7.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Lifecycle.State को अब Lifecycle.currentStateFlow की मदद से Compose-observable बनाया गया है. इससे StateFlow मिलता है, जहां value मौजूदा Lifecycle.State है. (Ib212d, b/209684871)
  • Lifecycle.Event को अब Lifecycle.asFlow(). के साथ Flow के तौर पर देखा जा सकता है (If2c0f, b/176311030)
  • LifecycleResumeEffect एपीआई को Lifecycle.Event.ON_RESUME और Lifecycle.Event.ON_PAUSE इवेंट कॉलबैक, दोनों के आधार पर Compose SideEffect चलाने के लिए जोड़ा गया है. (I60386, b/235529345)
  • LifecycleStartEffect एपीआई को Lifecycle.Event.ON_START और Lifecycle.Event.ON_STOP इवेंट कॉलबैक के आधार पर, Compose SideEffect चलाने के लिए जोड़ा गया है. (I5a8d1, b/235529345)
  • Lifecycle.Event के आधार पर Compose SideEffect चलाने के लिए, LifecycleEventEffect एपीआई जोड़ा गया है. (Ic9794, b/235529345)
  • Lifecycle.collectAsState() एक्सटेंशन जोड़ा गया है, ताकि Lifecycle.State को सीधे तौर पर 'लिखें' State के तौर पर दिखाया जा सके. यह lifecycle.currentStateFlow.collectAsState() के बराबर है और इसका विकल्प छोटा है. (I11015, b/235529345)

गड़बड़ियां ठीक की गईं

  • अगर पिछले LiveData में कोई वैल्यू सेट की गई है, तो LiveData.distinctUntilChanged() एक्सटेंशन अब दिखाए गए LiveData की value सेट करता है. इससे, निगरानी के तरीके में कोई बदलाव नहीं होता - सोर्स LiveData से अपडेट की गई वैल्यू तब ही लागू होंगी, जब distinctUntilChanged() से मिली LiveData को निगरानी करना शुरू किया जाएगा. (Ib482f)
  • LifecycleObserver से जुड़े, ProGuard के रखरखाव के नियम हटा दिए गए हैं. इसका मतलब है कि प्रोगर्ड किए गए ऐसे कोड को, रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने के लिए, अपने इस्तेमाल के उदाहरण के लिए, अपने हिसाब से बनाए गए नियम देने होंगे. (Ia12fd)

वर्शन 2.6

वर्शन 2.6.2

6 सितंबर, 2023

androidx.lifecycle:lifecycle-*:2.6.2 रिलीज़ हो गया है. 2.6.2 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, प्रोसेस के बंद होने के बाद SavedStateHandle को सही तरीके से वापस नहीं लाया जा सकता था. ऐसा तब होता था, जब स्टेटस को वापस लाया जाता था, save() को पैरंट SavedStateRegistry में स्टेटस को सेव किए बिना कॉल किया जाता था, और फिर स्टेटस को फिर से वापस लाया जाता था. इससे, rememberSaveable और नेविगेशन कंपोज़ के NavHost के बीच इंटरैक्शन ठीक हो जाता है. (aosp/2729289)

वर्शन 2.6.1

22 मार्च, 2023

androidx.lifecycle:lifecycle-*:2.6.1 रिलीज़ हो गया है. 2.6.1 वर्शन में ये बदलाव शामिल हैं.

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.6.0

8 मार्च, 2023

androidx.lifecycle:lifecycle-*:2.6.0 रिलीज़ हो गया है. 2.6.0 वर्शन में ये बदलाव शामिल हैं.

2.5.0 के बाद किए गए ज़रूरी बदलाव

  • LiveData में अब एक नई isInitialized प्रॉपर्टी शामिल है. इससे पता चलता है कि LiveData पर साफ़ तौर पर कोई वैल्यू सेट की गई है या नहीं. इससे, liveData.value की null वैल्यू के बीच अंतर किया जा सकता है, क्योंकि कोई वैल्यू कभी सेट नहीं की गई है या साफ़ तौर पर null वैल्यू सेट की गई है.
  • MediatorLiveData में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है.
  • collectAsStateWithLifecycle() के StateFlow और Flow में एक नया एक्सटेंशन जोड़ा गया है. यह फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, Compose State के तौर पर इसकी नई वैल्यू दिखाता है.
  • Lifecycle.launchWhenX और Lifecycle.whenX के तरीकों का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए किया गया है, क्योंकि कुछ मामलों में डिस्पैचर को रोकने से संसाधनों की बर्बादी हो सकती है. हमारा सुझाव है कि आप Lifecycle.repeatOnLifecycle का इस्तेमाल करें. एक बार के लिए खाता निलंबित करने के बारे में ज़्यादा जानकारी के लिए, कृपया यह जानकारी देखें कि यह सुविधा क्यों असुरक्षित है.
  • Kotlin में बदलाव - लाइफ़साइकल की कई क्लास को Kotlin में बदल दिया गया है. बदली गई सभी कक्षाएं, अब भी पिछले वर्शन के साथ बाइनरी के तौर पर काम करती हैं. Kotlin में लिखी गई क्लास के लिए, इन क्लास में सोर्स के साथ काम न करने वाले बदलाव किए गए हैं: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

नीचे दी गई टेबल में, लाइफ़साइकल के नए वर्शन के लिए सोर्स कन्वर्ज़न दिए गए हैं.

लाइफ़साइकल 2.5 लाइफ़साइकल 2.5 (KTX) लाइफ़साइकल 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • Kotlin में बनाए गए Observer के onChanged तरीके के लिए, वैल्यू न होने की स्थिति अब जेनरिक टाइप के लिए वैल्यू न होने की स्थिति से मेल खाती है. अगर आपको Observer.onChanged() में वैल्यू के तौर पर null को स्वीकार करना है, तो आपको Observer को वैल्यू के तौर पर null को स्वीकार करने वाले टाइप के साथ इंस्टैंशिएट करना होगा.
  • इन क्लास को भी Kotlin में बदल दिया गया है, लेकिन ये सोर्स के साथ काम करती रहेंगी: DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, ViewModelStore, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher, और ProcessLifecycleOwner

वर्शन 2.6.0-rc01

22 फ़रवरी, 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अगर पिछले LiveData में कोई वैल्यू सेट की गई है, तो LiveData.distinctUntilChanged() एक्सटेंशन अब रिटर्न किए गए LiveData की value सेट करता है. इससे, निगरानी के तरीके में कोई बदलाव नहीं होता - सोर्स LiveData से अपडेट की गई वैल्यू तब ही लागू होंगी, जब distinctUntilChanged() से मिली LiveData को निगरानी करना शुरू किया जाएगा. (Ib482f)

वर्शन 2.6.0-beta01

8 फ़रवरी, 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.

Kotlin कन्वर्ज़न

  • LifecycleOwner अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है - अब उन्हें पिछले getLifecycle() फ़ंक्शन को लागू करने के बजाय, lifecycle प्रॉपर्टी को बदलना होगा. (I75b4b, b/240298691)
  • ViewModelStoreOwner अब Kotlin में है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है - अब उन्हें पिछले getViewModelStore() फ़ंक्शन को लागू करने के बजाय, viewModelStore प्रॉपर्टी को बदलना होगा. (I86409, b/240298691)
  • LifecycleOwner पर मौजूद Kotlin एक्सटेंशन, जो lifecycleScope फ़ील्ड उपलब्ध कराता है उसे lifecycle-runtime-ktx से lifecycle-common आर्टफ़ैक्ट में ले जाया गया है. (I41d78, b/240298691)
  • Lifecycle पर मौजूद Kotlin एक्सटेंशन, जो coroutineScope फ़ील्ड उपलब्ध कराता है उसे lifecycle-runtime-ktx से lifecycle-common आर्टफ़ैक्ट में ले जाया गया है. (Iabb91, b/240298691)

वर्शन 2.6.0-alpha05

25 जनवरी, 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha05 रिलीज़ हो गया है. 2.6.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

Kotlin कन्वर्ज़न

  • Transformations अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर पर Transformations.map जैसे सिंटैक्स का इस्तेमाल कर रही थीं - Kotlin कोड में अब Kotlin एक्सटेंशन के उस सिंटैक्स का इस्तेमाल किया जाना चाहिए जो पहले सिर्फ़ lifecycle-livedata-ktx का इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय, androidx.arch.core.util.Function वाले तरीके का इस्तेमाल करने वाले इन तरीकों के वर्शन का इस्तेमाल नहीं किया जा सकता. इनकी जगह, Kotlin Function1 वाले वर्शन का इस्तेमाल किया जाता है. इस बदलाव से, बाइनरी के साथ काम करने की सुविधा बनी रहती है. (I8e14f)
  • ViewTreeViewModelStoreOwner अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए, androidx.lifecycle.setViewTreeViewModelStoreOwner और androidx.lifecycle.findViewTreeViewModelStoreOwner के View पर Kotlin एक्सटेंशन के तरीकों को सीधे इंपोर्ट और इस्तेमाल करना होगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, सोर्स के साथ काम करता रहता है. (Ia06d8, Ib22d8, b/240298691)
  • HasDefaultViewModelProviderFactory इंटरफ़ेस को अब Kotlin में लिखा गया है. Kotlin में लिखी गई क्लास के लिए, यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें मिलते-जुलते पिछले फ़ंक्शन लागू करने के बजाय, defaultViewModelProviderFactory और defaultViewModelCreationExtras प्रॉपर्टी को बदलना होगा. (Iaed9c, b/240298691)
  • Observer अब Kotlin में लिखा गया है. इसका onChanged() तरीका, अब अपने पैरामीटर के लिए value नाम का इस्तेमाल करता है. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher, और ProcessLifecycleOwner को अब Kotlin में लिखा गया है (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

वर्शन 2.6.0-alpha04

11 जनवरी, 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 रिलीज़ हो गया है. 2.6.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • LiveData में अब एक नई isInitialized प्रॉपर्टी शामिल है. इससे पता चलता है कि LiveData पर साफ़ तौर पर कोई वैल्यू सेट की गई है या नहीं. इससे, liveData.value की null वैल्यू के बीच अंतर किया जा सकता है, क्योंकि कोई वैल्यू कभी सेट नहीं की गई है या साफ़ तौर पर null वैल्यू सेट की गई है. (Ibd018)

एपीआई में हुए बदलाव

  • lifecycle-runtime-compose के collectAsStateWithLifecycle() एपीआई, अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)
  • Lifecycle.launchWhenX और Lifecycle.whenX के तरीकों का इस्तेमाल बंद कर दिया गया है. ऐसा इसलिए किया गया है, क्योंकि कुछ मामलों में डिस्पैचर को रोकने से संसाधनों की बर्बादी हो सकती है. हमारा सुझाव है कि आप Lifecycle.repeatOnLifecycle का इस्तेमाल करें. (Iafc54, b/248302832)

Kotlin कन्वर्ज़न

  • ViewTreeLifecycleOwner अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए, अब आपको सीधे androidx.lifecycle.setViewTreeLifecycleOwner और androidx.lifecycle.findViewTreeLifecycleOwner के View पर Kotlin एक्सटेंशन के तरीकों को इंपोर्ट और इस्तेमाल करना होगा. यह lifecycle-runtime-ktx में मौजूद Kotlin एक्सटेंशन की जगह लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, सोर्स के साथ काम करता रहता है. (I8a77a, I5234e, b/240298691)
  • LiveDataReactiveStreams अब Kotlin में लिखा गया है. lifecycle-reactivestreams-ktx में पहले मौजूद Kotlin एक्सटेंशन, lifecycle-reactivestreams मॉड्यूल में ले जा दिए गए हैं. साथ ही, Kotlin में लिखे गए कोड के लिए, ये मुख्य प्लैटफ़ॉर्म बन गए हैं. अगर Kotlin एक्सटेंशन के तरीके वाले एपीआई का पहले से इस्तेमाल नहीं किया जा रहा था, तो Kotlin में लिखे गए कोड के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. (I2b1b9, I95d22, b/240298691)
  • DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, और ViewModelStore को अब Kotlin में लिखा गया है (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)

गड़बड़ियां ठीक की गईं

  • गलत क्लास टाइप के साथ get() को कॉल करने पर, SavedStateHandle अब ClassCastException के साथ क्रैश नहीं होता. (I6ae7c)

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 रिलीज़ हो गया है. 2.6.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल के अलग-अलग मॉड्यूल के बीच की पाबंदियों के काम न करने से जुड़ी समस्या को ठीक किया गया. (I18d0d, b/249686765)
  • LifecycleRegistry.moveToState() की वजह से होने वाली गड़बड़ियों में अब गड़बड़ी के बारे में ज़्यादा मददगार मैसेज शामिल हैं. इनसे डेवलपर को उस कॉम्पोनेंट के बारे में पता चलता है जिसकी वजह से गड़बड़ी हुई है. (Idf4b2, b/244910446)

वर्शन 2.6.0-alpha02

7 सितंबर, 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 रिलीज़ हो गया है. 2.6.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • MediatorLiveData में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)

गड़बड़ियां ठीक की गईं

  • Lifecycle आर्टफ़ैक्ट में अब सीमाएं शामिल हैं. इनसे यह पक्का होता है कि एक-दूसरे पर निर्भर सभी लाइफ़साइकल आर्टफ़ैक्ट एक ही वर्शन का इस्तेमाल करते हैं. साथ ही, किसी एक आर्टफ़ैक्ट के अपग्रेड होने पर, अन्य आर्टफ़ैक्ट अपने-आप अपग्रेड हो जाते हैं. b/242871265
  • FlowLiveData.asFlow() अब अपने Channel लागू करने के बजाय, callbackFlow बनाता है, ताकि कांटेक्स्ट को सुरक्षित रखा जा सके और थ्रेड को सुरक्षित रखा जा सके. (I4a8b2, b/200596935)
  • FlowLiveData का asLiveData फ़ंक्शन, अब नया LiveData ऑब्जेक्ट बनाते समय StateFlow की शुरुआती वैल्यू को बनाए रखेगा. (I3f530, b/157380488)
  • लाइफ़साइकल 2.5.1 से: AndroidViewModelFactory के कस्टम तरीके से लागू होने पर, अब Lifecycle 2.4+ (I5b315, b/238011621) के साथ स्टेटफ़ुल कन्स्ट्रक्टर का इस्तेमाल करने पर, create(modelClass) फ़ंक्शन सही तरीके से कॉल होता है

वर्शन 2.6.0-alpha01

29 जून, 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 रिलीज़ हो गया है. 2.6.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • collectAsStateWithLifecycle के StateFlow और Flow पर एक नया एक्सटेंशन जोड़ा गया है. यह फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, अपनी नई वैल्यू को 'लिखने की स्थिति' के तौर पर दिखाता है. फ़्लो इकट्ठा किया जाता है और नया उत्सर्जन, स्टेट की वैल्यू पर सेट किया जाता है. ऐसा तब होता है, जब लाइफ़साइकल कम से कम किसी Lifecycle.State में हो. जब लाइफ़साइकल Lifecycle.State से कम हो जाता है, तो फ़्लो कलेक्शन बंद हो जाता है और स्टेटस की वैल्यू अपडेट नहीं होती. (I1856e, b/230557927)

वर्शन 2.5

वर्शन 2.5.1

27 जुलाई, 2022

androidx.lifecycle:lifecycle-*:2.5.1 रिलीज़ हो गया है. 2.5.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Lifecycle 2.4 और उसके बाद के वर्शन के साथ, स्टेटफ़ुल AndroidViewModelFactory कन्स्ट्रक्टर का इस्तेमाल करने पर, AndroidViewModelFactory के कस्टम तरीके से लागू होने वाले फ़ंक्शन अब सही तरीके से create(modelClass) फ़ंक्शन को कॉल करते हैं. (I5b315, b/238011621)

वर्शन 2.5.0

29 जून, 2022

androidx.lifecycle:lifecycle-*:2.5.0 रिलीज़ हो गया है. 2.5.0 वर्शन में ये बदलाव शामिल हैं.

2.4.0 के बाद किए गए ज़रूरी बदलाव

  • SavedStateHandle अब getStateFlow() एपीआई उपलब्ध कराता है. यह LiveData का इस्तेमाल करने के विकल्प के तौर पर, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए Kotlin StateFlow दिखाता है.

  • ViewModel CreationExtras - कस्टम ViewModelProvider.Factory लिखते समय, Application या SavedStateHandle का ऐक्सेस पाने के लिए, अब AndroidViewModelFactory या AbstractSavedStateViewModelFactory को एक्सटेंड करने की ज़रूरत नहीं है. इसके बजाय, ये फ़ील्ड create: create(Class<T>, CreationExtras) के नए ओवरलोड की मदद से, CreationExtras के तौर पर हर ViewModelProvider.Factory सबक्लास को दिए जाते हैं. ऐक्टिविटी 1.5.0 और फ़्रैगमेंट 1.5.0 का इस्तेमाल करने पर, ये अतिरिक्त एलिमेंट आपकी ऐक्टिविटी या फ़्रैगमेंट से अपने-आप मिल जाते हैं.

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • lifecycle-viewmodel अब viewModelFactory Kotlin DSL उपलब्ध कराता है. इसकी मदद से, एक या उससे ज़्यादा लैंबा इनिशलाइज़र के हिसाब से ViewModelProvider.Factory तय किया जा सकता है. हर उस ViewModel क्लास के लिए एक, जो आपकी कस्टम फ़ैक्ट्री के साथ काम करती है. इसके लिए, CreationExtras को मुख्य डेटा सोर्स के तौर पर इस्तेमाल किया जाता है.

    val customFactory = viewModelFactory {
        // The return type of the lambda automatically sets what class this lambda handles
        initializer {
            // Get the Application object from extras provided to the lambda
            val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY))
            HomeViewModel(application)
        }
        initializer {
            val savedStateHandle = createSavedStateHandle()
            DetailViewModel(savedStateHandle)
        }
    }
    
  • lifecycle-viewmodel-compose अब एक viewModel() एपीआई उपलब्ध कराता है. यह एपीआई, ViewModel इंस्टेंस बनाने के लिए, कस्टम ViewModelProvider.Factory बनाने की ज़रूरत के बिना, एक लैंबा फ़ैक्ट्री लेता है.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • SavedStateHandle Compose Saver इंटिग्रेशन - lifecycle-viewmodel-compose आर्टफ़ैक्ट में अब SavedStateHandle.saveable में नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से, rememberSaveable की तरह काम करने वाले SavedStateHandle को `ViewModel में शामिल किया जा सकता है.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • addCloseable() एपीआई और एक नया कन्स्ट्रक्टर ओवरलोड जोड़ा गया है. इसकी मदद से, ViewModel में एक या उससे ज़्यादा Closeable ऑब्जेक्ट जोड़े जा सकते हैं. ये ऑब्जेक्ट, ViewModel खाली होने पर बंद हो जाएंगे. इसके लिए, onCleared() में मैन्युअल रूप से कुछ करने की ज़रूरत नहीं होगी.

    उदाहरण के लिए, ऐसा कोरुटाइन स्कोप बनाने के लिए जिसे ViewModel में इंजेक्ट किया जा सकता है, लेकिन टेस्टिंग की मदद से कंट्रोल किया जा सकता है, CoroutineScope बनाएं जो Closeable को लागू करता है:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    इसके बाद, viewModelScope के लाइफ़टाइम को बनाए रखते हुए, ViewModel कन्स्ट्रक्टर में इसका इस्तेमाल किया जा सकता है:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

व्यवहार में बदलाव

  • Lifecycle.State को INITIALIZED से DESTROYED पर ले जाने की कोशिश करने पर, अब हमेशा IllegalStateException दिखेगा. भले ही, Lifecycle में कोई ऑब्ज़र्वर अटैच हो.
  • LifecycleRegistry अब DESTROYED स्टेटस पर पहुंचने पर, अपने ऑब्ज़र्वर हटा देगा.

वर्शन 2.5.0-rc02

15 जून, 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 रिलीज़ हो गया है. 2.5.0-rc02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • compileOnly लाइफ़साइकल डिपेंडेंसी के पिछले वर्शन को 2.5 और उसके बाद के वर्शन के साथ मिक्स करने पर, ViewModelProvider अब क्रैश नहीं होगा. (I81a66, b/230454566)

वर्शन 2.5.0-rc01

11 मई, 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 रिलीज़ हो गया है. 2.5.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • MediatorLiveData.addSource() अब null सोर्स को ऑब्जर्वर को भेजने के बजाय, null सोर्स को पास करने पर NullPointerException दिखाता है.(Ibd0fb, b/123085232)

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 रिलीज़ हो गया है. 2.5.0-beta01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SavedStateHandle.saveable प्रॉपर्टी डेलिगेट जोड़े गए, ताकि SavedStateHandle में स्थिति को सेव करने के लिए, प्रॉपर्टी के नामों को कुंजियों के तौर पर इस्तेमाल किया जा सके (I8bb86, b/225014345)

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, किसी नॉन-प्राइमरी बॉटम नेविगेशन टैब में, एक NavHost को दूसरे NavHost में नेस्ट करने पर, कई बैक स्टैक का इस्तेमाल करने पर IllegalStateException दिखता था. (I11bd5, b/228865698)

वर्शन 2.5.0-alpha06

6 अप्रैल, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 रिलीज़ हो गया है. 2.5.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • rememberSaveable के साथ बराबरी के लिए, SavedStateHandle.saveable में एक्सपेरिमेंटल MutableState ओवरलोड जोड़ें (I38cfe, b/224565154)

एपीआई में हुए बदलाव

  • CreationExtras अब सील होने के बजाय एब्स्ट्रैक्ट है. (Ib8a7a)

गड़बड़ियां ठीक की गईं

  • SavedStateHandleController की वजह से हुई IllegalStateException: Already attached to lifecycleOwner गड़बड़ी को ठीक किया गया. (I7ea47, b/215406268)

वर्शन 2.5.0-alpha05

23 मार्च, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 रिलीज़ हो गया है. 2.5.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • lifecycle-viewmodel-compose मॉड्यूल अब SavedStateHandleSaver उपलब्ध कराता है. यह एक एक्सपेरिमेंटल एपीआई है, जो यह पक्का करता है कि SavedStateHandle में मौजूद वैल्यू, सेव किए गए उस इंस्टेंस स्टेटस के साथ सही तरीके से इंटिग्रेट हो जिसका इस्तेमाल rememberSaveable करता है. (Ia88b7, b/195689777)

एपीआई में हुए बदलाव

  • Java में, लाइफ़साइकल 2.3 और लाइफ़साइकल के नए वर्शन के साथ काम करने से जुड़ी समस्या को ठीक किया गया. (I52c8a, b/219545060)

गड़बड़ियां ठीक की गईं

  • SavedStateViewFactory अब CreationExtras का इस्तेमाल कर सकता है, भले ही उसे SavedStateRegistryOwner से शुरू किया गया हो. अगर अतिरिक्त आर्ग्युमेंट दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)

वर्शन 2.5.0-alpha04

9 मार्च, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 रिलीज़ हो गया है. 2.5.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SavedStateHandle अब getStateFlow() एपीआई उपलब्ध कराता है. यह LiveData का इस्तेमाल करने के विकल्प के तौर पर, वैल्यू में हुए बदलावों को मॉनिटर करने के लिए Kotlin StateFlow दिखाता है. (Iad3ab, b/178037961)

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 रिलीज़ हो गया है. 2.5.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • addCloseable() एपीआई और एक नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इससे, ViewModel में एक या उससे ज़्यादा Closeable ऑब्जेक्ट जोड़े जा सकते हैं. ये ऑब्जेक्ट, ViewModel के क्लियर होने पर बंद हो जाएंगे. इसके लिए, onCleared() में मैन्युअल रूप से कुछ करने की ज़रूरत नहीं होगी. (I55ea0)
  • lifecycle-viewmodel अब एक InitializerViewModelFactory उपलब्ध कराता है. इसकी मदद से, किसी खास ViewModel क्लास को मैनेज करने के लिए, CreationExtras को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके, lambda जोड़ा जा सकता है. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose अब एक viewModel() एपीआई उपलब्ध कराता है, जो ViewModel इंस्टेंस बनाने के लिए, कस्टम ViewModelProvider.Factory बनाने की ज़रूरत के बिना, एक lambda फ़ैक्ट्री लेता है. (I97fbb, b/216688927)

एपीआई में हुए बदलाव

  • अब lifecycle-viewmodel-compose की मदद से, CreationExtras के साथ ViewModel बनाया जा सकता है. (I08887, b/216688927)

व्यवहार में बदलाव

  • Lifecycle.State को INITIALIZED से DESTROYED पर ले जाने की कोशिश करने पर, अब हमेशा IllegalStateException दिखेगा. भले ही, Lifecycle में कोई ऑब्ज़र्वर अटैच हो. (I7c390, b/177924329)
  • LifecycleRegistry अब DESTROYED स्टेटस पर पहुंचने पर, अपने ऑब्ज़र्वर हटा देगा. (I4f8dd, b/142925860)

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 रिलीज़ हो गया है. 2.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SavedStateHandle और SavedStateViewModelFactory को Kotlin में बदल दिया गया है. इससे, दोनों क्लास में मौजूद सामान्य वैल्यू के लिए, वैल्यू न होने की स्थिति को बेहतर बनाया गया है. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • LiveData switchMap फ़ंक्शन पैरामीटर का आउटपुट अब शून्य हो सकता है. (I40396, b/132923666)
  • LiveData -ktx एक्सटेंशन को अब @CheckResult के साथ एनोटेट किया गया है, ताकि इन फ़ंक्शन को कॉल करते समय नतीजे का इस्तेमाल किया जा सके. (Ia0f05, b/207325134)

व्यवहार में बदलाव

  • SavedStateHandle अब, तय की गई कुंजी के लिए कोई वैल्यू मौजूद न होने पर, डिफ़ॉल्ट वैल्यू को सही तरीके से सेव करता है. (I1c6ce, b/178510877)

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.4.1 से: lifecycle-process को Startup 1.1.1 पर निर्भर करने के लिए अपडेट किया गया है. इससे यह पक्का किया जा सकेगा कि ProcessLifecycleInitializer को StartupException दिखाने से रोकने वाले सुधार, डिफ़ॉल्ट रूप से उपलब्ध हों. (Ib01df, b/216490724)
  • कस्टम AndroidViewModel क्लास में पैरामीटर गलत क्रम में होने और ViewModel बनाने की कोशिश करने पर, अब गड़बड़ी का बेहतर मैसेज दिखेगा. (I340f7, b/177667711)
  • अब ऐप्लिकेशन सेट किए बिना, AndroidViewModelFactory का इस्तेमाल करके CreationExtras के ज़रिए व्यू मॉडल बनाया जा सकता है. (I6ebef, b/217271656)

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 रिलीज़ हो गया है. 2.5.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

ViewModel CreationExtras

इस रिलीज़ के साथ, हम ViewModel को बनाने के तरीके में बदलाव करने की तैयारी कर रहे हैं. हम ViewModelProvider.Factory के सबक्लास के सख्त सेट के बजाय, स्टेटलेस फ़ैक्ट्री की दुनिया में जा रहे हैं. ये फ़ैक्ट्री, CreationExtras नाम के नए कॉन्सेप्ट पर निर्भर करती हैं. हर सबक्लास में अतिरिक्त फ़ंक्शन जोड़े जाते हैं. जैसे, AndroidViewModelFactory की मदद से Application कंस्ट्रक्टर पैरामीटर जोड़ना, SavedStateViewModelFactory और AbstractSavedStateViewModelFactory की मदद से SavedStateHandle कंस्ट्रक्टर पैरामीटर जोड़ना वगैरह. (Ia7343, b/188691010, b/188541057)

इस बदलाव के बाद, ViewModelProvider अब ViewModelProvider.Factory के पिछले create(Class<T>) तरीके में सीधे कॉल नहीं करता. इसके बजाय, यह create: create(Class<T>, CreationExtras) के नए ओवरलोड को कॉल करता है. इसका मतलब है कि ViewModelProvider.Factory इंस्टेंस को सीधे लागू करने पर, अब इन सभी नए CreationExtras का ऐक्सेस मिल जाता है:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: यह String, उस कस्टम पासकोड का ऐक्सेस देता है जिसे आपने ViewModelProvider.get() को पास किया था.
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY, Application क्लास का ऐक्सेस देता है.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY, उस SavedStateRegistryOwner को ऐक्सेस करता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY, उस ViewModelStoreOwner को ऐक्सेस करता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY, Bundle आर्ग्युमेंट का ऐक्सेस देता है. इन आर्ग्युमेंट का इस्तेमाल, SavedStateHandle बनाने के लिए किया जाना चाहिए.

गतिविधि 1.5.0-alpha01, फ़्रैगमेंट 1.5.0-alpha01, और नेविगेशन 2.5.0-alpha01 का इस्तेमाल करते समय, ये अतिरिक्त जानकारी डिफ़ॉल्ट रूप से मिलती है. अगर उन लाइब्रेरी के पुराने वर्शन का इस्तेमाल किया जाता है, तो आपका CreationExtras खाली रहेगा. ViewModelProvider.Factory के सभी मौजूदा सबक्लास को फिर से लिखा गया है, ताकि उन लाइब्रेरी के पुराने वर्शन में इस्तेमाल किए गए लेगसी क्रिएशन पाथ और आने वाले समय में इस्तेमाल किए जाने वाले CreationExtras पाथ, दोनों के साथ काम किया जा सके.

इन CreationExtras की मदद से, ऐसा ViewModelProvider.Factory बनाया जा सकता है जो फ़ैक्ट्री के सबक्लास की सख्त हैरारकी पर भरोसा किए बिना, हर ViewModel को सिर्फ़ ज़रूरी जानकारी भेजता है:

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

हम SavedStateHandleSupport से CreationExtras पर createSavedStateHandle() Kotlin एक्सटेंशन फ़ंक्शन का इस्तेमाल करते हैं, ताकि सिर्फ़ उस ViewModel के लिए SavedStateHandle बनाया जा सके जिसकी ज़रूरत है. (Ia6654, b/188541057)

कस्टम CreationExtras को ComponentActivity या Fragment में getDefaultViewModelCreationExtras() को बदलकर उपलब्ध कराया जा सकता है. इससे, उन्हें आपके कस्टम ViewModelProvider.Factory के लिए, असिस्टेड इंजेक्शन के तौर पर उपलब्ध कराया जा सकता है. ViewModelProvider के साथ सीधे तौर पर इस्तेमाल करने पर या by viewModels() और by activityViewModels() Kotlin प्रॉपर्टी एक्सटेंशन का इस्तेमाल करने पर, ये एक्सट्रा आपकी कस्टम फ़ैक्ट्री में अपने-आप उपलब्ध हो जाएंगे. (I79f2b, b/207012584, b/207012585, b/207012490)

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, SavedStateHandle के लिए दी गई डिफ़ॉल्ट वैल्यू, प्रोसेस के बंद होने और फिर से शुरू होने के बाद फिर से दिखती थी. भले ही, उसे SavedStateHandle से खास तौर पर हटा दिया गया हो. इस वजह से, SavedStateHandle अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, वह सिर्फ़ वापस लाई गई वैल्यू का इस्तेमाल सटीक वैल्यू के तौर पर करेगा. (I53a4b)

वर्शन 2.4

वर्शन 2.4.1

9 फ़रवरी, 2022

androidx.lifecycle:lifecycle-*:2.4.1 रिलीज़ हो गया है. 2.4.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.5.0-alpha01 से बैकपोर्ट किया गया: एक समस्या को ठीक किया गया है. इसमें, SavedStateHandle के लिए दी गई डिफ़ॉल्ट वैल्यू, प्रोसेस के बंद होने और फिर से शुरू होने के बाद फिर से दिखती थी. भले ही, उसे SavedStateHandle से खास तौर पर हटा दिया गया हो. इस वजह से, SavedStateHandle अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, वह सिर्फ़ वापस लाई गई वैल्यू का इस्तेमाल सटीक वैल्यू के तौर पर करेगा. (I53a4b)
  • lifecycle-process अब Androidx Startup 1.1.1 पर निर्भर करता है. इसने उस समस्या को ठीक किया है जिसमें ProcessLifecycleInitializer का इस्तेमाल करने पर StartupException होता था. (b/216490724)

वर्शन 2.4.0

27 अक्टूबर, 2021

androidx.lifecycle:lifecycle-*:2.4.0 रिलीज़ हो गया है. 2.4.0 वर्शन में ये बदलाव शामिल हैं.

2.3.0 के बाद किए गए अहम बदलाव

  • @OnLifecycleEvent का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, LifecycleEventObserver या DefaultLifecycleObserver का इस्तेमाल किया जाना चाहिए.
  • androidx.lifecycle:lifecycle-viewmodel-compose लाइब्रेरी जोड़ी गई. इसमें viewModel() कंपोज़ेबल और LocalViewModelStoreOwner की सुविधाएं मिलती हैं.
    • सोर्स में बदलाव: ViewModelProvider को Kotlin में फिर से लिखा गया है. ViewModelProvider.Factory.create मेथड में, अब वैल्यू न होने की अनुमति वाले जेनरिक का इस्तेमाल नहीं किया जा सकता.
  • androidx.lifecycle:lifecycle-runtime-ktx में नए कोरूटीन एपीआई जोड़े गए हैं:
  • Lifecycle.repeatOnLifecycle, यह एपीआई किसी कोरयूटीन में कोड का ब्लॉक तब चलाता है, जब लाइफ़साइकल कम से कम किसी खास स्थिति में हो. लाइफ़साइकल के टारगेट स्टेटस में आने और उससे बाहर निकलने पर, ब्लॉक रद्द हो जाएगा और फिर से लॉन्च हो जाएगा;
  • Flow.flowWithLifecycle, यह एक ऐसा एपीआई है जो अपस्ट्रीम फ़्लो से वैल्यू तब ही भेजता है, जब लाइफ़साइकल कम से कम किसी खास स्थिति में हो.
  • DefaultLifecycleObserver को lifecycle.lifecycle-common-java8 से lifecycle.lifecycle-common में ले जाया गया. lifecycle.lifecycle-common-java8, lifecycle.lifecycle-common के अलावा कोई और फ़ंक्शन नहीं देता. इसलिए, इस पर निर्भरता को lifecycle.lifecycle-common से बदला जा सकता है.
  • lifecycle-viewmodel-ktx के ऐसे एपीआई जिन्हें कोरूटीन के तौर पर इस्तेमाल नहीं किया जा सकता उन्हें lifecycle-viewmodel मॉड्यूल में ले जाया गया है.
  • lifecycle-process अब ProcessLifecycleOwner को शुरू करने के लिए, androidx.startup का इस्तेमाल करता है.

    पहले, androidx.lifecycle.ProcessLifecycleOwnerInitializer यह काम करता था.

    अगर आपने tools:node="remove" का इस्तेमाल किया है, तो आपको इसके बजाय यह तरीका अपनाना होगा.ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (या)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

वर्शन 2.4.0-rc01

29 सितंबर, 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01 को Lifecycle 2.4.0-beta01 से बिना किसी बदलाव के रिलीज़ किया गया है. 2.4.0-rc01 वर्शन में ये बदलाव शामिल हैं.

वर्शन 2.4.0-beta01

15 सितंबर, 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 रिलीज़ हो गया है. 2.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • @OnLifecycleEvent का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय, LifecycleEventObserver या DefaultLifecycleObserver का इस्तेमाल किया जाना चाहिए. (I5a8fa)
  • DefaultLifecycleObserver को androidx.lifecycle.lifecycle-common-java8 से androidx.lifecycle.lifecycle-common पर ले जाया गया. androidx.lifecycle.lifecycle-common-java8, androidx.lifecycle.lifecycle-common के अलावा कोई और फ़ंक्शन नहीं देता. इसलिए, androidx.lifecycle.lifecycle-common-java8 पर निर्भरता को androidx.lifecycle.lifecycle-common से बदला जा सकता है. (I021aa)
  • lifecycle-viewmodel-ktx के ऐसे एपीआई जिन्हें कोरूटीन के तौर पर इस्तेमाल नहीं किया जा सकता उन्हें lifecycle-viewmodel मॉड्यूल में ले जाया गया है. (I6d5b2)

बाहरी योगदान

  • ViewModel दस्तावेज़ में टाइप ठीक करने के लिए, dmitrilc को धन्यवाद! (#221)

वर्शन 2.4.0-alpha03

4 अगस्त, 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 रिलीज़ हो गया है. 2.4.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • सोर्स में बदलाव: ViewModelProvider को Kotlin में फिर से लिखा गया है. ViewModelProvider.Factory.create मेथड में अब nullable जेनरिक का इस्तेमाल नहीं किया जा सकता. (I9b9f6)

व्यवहार में बदलाव

  • अब Lifecycle.repeatOnLifecycle: block को दोहराए जाने पर, हमेशा क्रम से लागू किया जाता है. (Ibab33)

बाहरी योगदान

  • repeatOnLifecycle दस्तावेज़ में कोड स्निपेट ठीक करने के लिए, chao2zhang को धन्यवाद. #205.

वर्शन 2.4.0-alpha02

16 जून, 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 रिलीज़ हो गया है. 2.4.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • lifecycle-runtime-ktx में एक नई RepeatOnLifecycleWrongUsage लिंट जांच जोड़ी गई है. इससे पता चलता है कि onStart() या onResume() में repeateOnLifecycle का गलत इस्तेमाल कब किया गया है. (706078, b/187887400)

एपीआई में हुए बदलाव

  • LifecycleOwner.addRepeatingJob एपीआई को Lifecycle.repeatOnLifecycle के पक्ष में हटा दिया गया है. यह एपीआई, स्ट्रक्चर्ड मल्टीप्रोसेसिंग का पालन करता है और इसे समझना आसान है. (I4a3a8)
  • ProcessLifecycleInitializer को सार्वजनिक करें, ताकि अन्य androidx.startup.Initializer इनका इस्तेमाल डिपेंडेंसी के तौर पर कर सकें. (I94c31)

गड़बड़ियां ठीक की गईं

  • फ़ील्ड में मॉडिफ़ायर होने पर, NullSafeMutableLiveData की लिंट जांच से जुड़ी समस्या को ठीक किया गया. (#147, b/183696616)
  • जेनरिक का इस्तेमाल करते समय, NullSafeMutableLiveData लिंट की जांच करने से जुड़ी एक और समस्या को ठीक किया गया. (#161, b/184830263)

बाहरी योगदान

  • NullSafeMutableLiveData लिंट जांच को बेहतर बनाने के लिए, maxsav को धन्यवाद. (#147, b/183696616)
  • NullSafeMutableLiveData लिंट जांच को बेहतर बनाने के लिए, kozaxinan को धन्यवाद. (#161, b/184830263)

वर्शन 2.4.0-alpha01

24 मार्च, 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 रिलीज़ हो गया है. 2.4.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • lifecycle-process अब ProcessLifecycleOwner को शुरू करने के लिए, androidx.startup का इस्तेमाल करता है.

    पहले, androidx.lifecycle.ProcessLifecycleOwnerInitializer यह काम करता था.

    अगर आपने tools:node="remove" का इस्तेमाल किया है, तो आपको इसके बजाय यह तरीका अपनाना होगा.ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (या)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

एपीआई में हुए बदलाव

  • Flow.flowWithLifecycle एपीआई जोड़ा गया है, जो Lifecycle.repeatOnLifecycle एपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम किसी खास स्टेटस में होने पर, अपस्ट्रीम फ़्लो से वैल्यू उत्सर्जित करता है. यह नए LifecycleOwner.addRepeatinJob API का विकल्प है. (I0f4cd)

गड़बड़ियां ठीक की गईं

  • Lifecycle 2.3.1 से: NonNullableMutableLiveData लिंट नियम अब अलग-अलग वैल्यू के फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)

लाइफ़साइकल Viewmodel Compose वर्शन 1.0.0

वर्शन 1.0.0-alpha07

16 जून, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 रिलीज़ हो गया है. 1.0.0-alpha07 वर्शन में ये कमिट शामिल हैं.

एपीआई में होने वाले बदलाव

  • viewModel() में अब ViewModelStoreOwner का इस्तेमाल करना ज़रूरी नहीं है. इससे LocalViewModelStoreOwner के अलावा, दूसरे मालिकों के साथ काम करना आसान हो जाता है. उदाहरण के लिए, अब किसी नेविगेशन ग्राफ़ से जुड़े ViewModel को वापस पाने के लिए, viewModel(navBackStackEntry) का इस्तेमाल किया जा सकता है. (I2628d, b/188693123)

वर्शन 1.0.0-alpha06

2 जून, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 रिलीज़ हो गया है. 1.0.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

Compose के 1.0.0-beta08 वर्शन के साथ काम करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha05

18 मई, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 रिलीज़ हो गया है. 1.0.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Compose के 1.0.0-beta07 वर्शन के साथ काम करने के लिए अपडेट किया गया.

गड़बड़ियां ठीक की गईं

  • ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 (I6f9de, b/184718994) के साथ काम करती हैं

वर्शन 1.0.0-alpha04

7 अप्रैल, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 रिलीज़ हो गया है. 1.0.0-alpha04 वर्शन में ये कमिट शामिल हैं.

डिपेंडेंसी में बदलाव

  • इस वर्शन की मदद से, androidx.hilt:hilt-navigation-compose और androidx.navigation:navigation-compose को androidx.compose.compiler:compiler:1.0.0-beta04 और androidx.compose.runtime:runtime:1.0.0-beta04 पर डिपेंडेंसी सिंक करने की अनुमति मिलती है. 1.0.0 के लिए, यह ज़रूरी है कि कंपाइलर और रनटाइम मैच करें.

वर्शन 1.0.0-alpha03

10 मार्च, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 रिलीज़ हो गया है. 1.0.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LocalViewModelStoreOwner.current अब एक ऐसा ViewModelStoreOwner दिखाता है जिसे शून्य पर सेट किया जा सकता है. इससे यह तय करने में मदद मिलती है कि मौजूदा कॉम्पोज़िशन में ViewModelStoreOwner उपलब्ध है या नहीं. viewModel() और NavHost जैसे एपीआई के लिए ViewModelStoreOwner की ज़रूरत होती है. हालांकि, अगर ViewModelStoreOwner सेट नहीं किया जाता है, तो भी ये एपीआई अपवाद दिखाते हैं. (Idf39a)

Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha02

24 फ़रवरी, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 रिलीज़ हो गया है. 1.0.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • LocalViewModelStoreOwner में अब provides फ़ंक्शन हैं. इनका इस्तेमाल CompositionLocalProvider के साथ किया जा सकता है. इससे asProvidableCompositionLocal() एपीआई की जगह ले ली जाएगी. (I45d24)

Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha01

10 फ़रवरी, 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 रिलीज़ हो गया है. 1.0.0-alpha01 वर्शन में ये कमिट शामिल हैं.

नई सुविधाएं

  • viewModel() कॉम्पोज़ेबल और LocalViewModelStoreOwner को androidx.compose.ui.viewinterop से androidx.lifecycle.viewmodel.compose पैकेज में इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)

वर्शन 2.3.1

लाइफ़साइकल वर्शन 2.3.1

24 मार्च, 2021

androidx.lifecycle:lifecycle-*:2.3.1 रिलीज़ हो गया है. 2.3.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NonNullableMutableLiveData लिंट नियम अब अलग-अलग वैल्यू के फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)

वर्शन 2.3.0

वर्शन 2.3.0

10 फ़रवरी, 2021

androidx.lifecycle:lifecycle-*:2.3.0 रिलीज़ हो गया है. 2.3.0 वर्शन में ये बदलाव शामिल हैं.

2.2.0 के बाद किए गए मुख्य बदलाव

  • पार्टिकल नहीं की जा सकने वाली क्लास के लिए SavedStateHandle का इस्तेमाल: SavedStateHandle अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इसके लिए, आपको किसी कीवर्ड के लिए setSavedStateProvider() को कॉल करने की अनुमति मिलती है. साथ ही, एक SavedStateProvider भी दिया जाता है. जब SavedStateHandle से अपनी स्थिति सेव करने के लिए कहा जाएगा, तब saveState() को कॉलबैक मिलेगा. ऐसी कक्षाएं सेव करना जिन्हें पार्सल नहीं किया जा सकता लेख पढ़ें.
  • लाइफ़साइकल से जुड़ी गतिविधि को लागू करना:
    • LifecycleRegistry अब DESTROYED को टर्मिनल स्टेटस के तौर पर लागू करता है.
    • LifecycleRegistry अब इस बात की पुष्टि करता है कि उसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए हमेशा ज़रूरी था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश को पकड़ना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वाले LifecycleRegistry ऑब्जेक्ट के लिए, LifecycleRegistry.createUnsafe(...) का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड से इस LifecycleRegistry को ऐक्सेस करते समय, सही सिंक्रोनाइज़ेशन हो रहा हो.
  • लाइफ़साइकल स्टेटस और इवेंट हेल्पर: State और ट्रांज़िशन डायरेक्शन के हिसाब से Event जनरेट करने के लिए, Lifecycle.Event में downFrom(State), downTo(State), upFrom(State), upTo(State) के स्टैटिक हेल्पर तरीके जोड़े गए हैं. getTargetState() मेथड जोड़ा गया है, जो State देता है. लाइफ़साइकल, Event के बाद सीधे तौर पर State पर ट्रांज़िशन करेगा.
  • withStateAtLeast: Lifecycle.withStateAtLeast एपीआई जोड़े गए हैं, जो लाइफ़साइकल स्टेटस का इंतज़ार करते हैं और स्टेटस में बदलाव होने पर, कोड के ऐसे ब्लॉक को सिंक करके चलाते हैं जिसे सस्पेंड नहीं किया जा सकता. इसके बाद, नतीजे के साथ फिर से शुरू किया जाता है. ये एपीआई, मौजूदा when* तरीकों से अलग हैं, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते और कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)
  • ViewTree एपीआई: ViewTreeLifecycleOwner.get(View) और ViewTreeViewModelStoreOwner.get(View) एपीआई की मदद से, View इंस्टेंस में मौजूद LifecycleOwner और ViewModelStoreOwner को क्रमशः वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity 1.2.0 और Fragment 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)

बाहरी योगदान

वर्शन 2.3.0-beta01

1 अक्टूबर, 2020

androidx.lifecycle:lifecycle-*:2.3.0-beta01 रिलीज़ हो गया है. 2.3.0-beta01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • लैम्ब्डा सिंटैक्स का इस्तेमाल करने के लिए ज़रूरी LiveData.observe() Kotlin एक्सटेंशन अब काम नहीं करता, क्योंकि Kotlin 1.4 का इस्तेमाल करते समय इसकी ज़रूरत नहीं होती. (I40d3f)

गड़बड़ियां ठीक की गईं

  • Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करें (Id6471, b/165307851, b/165300826)

दस्तावेज़ में बदलाव

  • liveData बिल्डर और asLiveData() दस्तावेज़ों को अपडेट किया गया है, ताकि दी गई टाइम आउट वैल्यू बदलने के बारे में जानकारी शामिल की जा सके. (aosp/1122324)

वर्शन 2.3.0-alpha07

19 अगस्त, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 रिलीज़ हो गया है. 2.3.0-alpha07 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NullSafeMutableLiveData Lint की जांच करने की सुविधा में, क्रैश होने की समस्या को ठीक किया गया है. (aosp/1395367)

वर्शन 2.3.0-alpha06

22 जुलाई, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 रिलीज़ हो गया है. 2.3.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • State और ट्रांज़िशन डायरेक्शन के हिसाब से Event जनरेट करने के लिए, Lifecycle.Event में downFrom(State), downTo(State), upFrom(State), upTo(State) के स्टैटिक हेल्पर तरीके जोड़े गए. getTargetState() मेथड जोड़ा गया है, जो State देता है. लाइफ़साइकल, Event के बाद सीधे तौर पर State पर ट्रांज़िशन करेगा. (I00887)
  • Lifecycle.withStateAtLeast ऐसे एपीआई जोड़े गए हैं जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं और स्थिति बदलने के समय, कोड के ऐसे ब्लॉक को सिंक करके चलाते हैं जिसे सस्पेंड नहीं किया जा सकता. इसके बाद, नतीजे के साथ फिर से शुरू करते हैं. ये एपीआई, मौजूदा when* तरीकों से अलग हैं, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते और कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)

व्यवहार में बदलाव

  • LifecycleRegistry अब DESTROYED को टर्मिनल स्टेटस के तौर पर लागू करता है. (I00887)
  • LifecycleRegistry अब पुष्टि करता है कि उसके तरीकों को मुख्य थ्रेड पर कॉल किया जाता है. यह गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए हमेशा ज़रूरी था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश को पकड़ना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वाले LifecycleRegistry ऑब्जेक्ट के लिए, LifecycleRegistry.createUnsafe(...) का इस्तेमाल करके साफ़ तौर पर जांच से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड (Ie7280, b/137392809) से इस LifecycleRegistry को ऐक्सेस करने पर, सही सिंक्रोनाइज़ेशन हो

गड़बड़ियां ठीक की गईं

  • NullSafeMutableLiveData में क्रैश होने की समस्या को ठीक किया गया. (b/159987480)
  • lifecycle-livedata-core-ktx (खास तौर पर NullSafeMutableLiveData) के साथ बंडल की गई लिंट जांच के लिए, ObsoleteLintCustomCheck को ठीक किया गया. (b/158699265)

वर्शन 2.3.0-alpha05

24 जून, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 रिलीज़ हो गया है. 2.3.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • LiveData अब फिर से आने वाले मामलों को बेहतर तरीके से मैनेज करता है. इससे onActive() या onInactive() को डुप्लीकेट कॉल करने से बचा जा सकता है. (b/157840298)
  • Android Studio 4.1 Canary 6 या इसके बाद के वर्शन का इस्तेमाल करने पर, Lint की जांच न होने की समस्या को ठीक किया गया. (aosp/1331903)

वर्शन 2.3.0-alpha04

10 जून, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 रिलीज़ हो गया है. 2.3.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NonNullableMutableLiveData Lint जांच में क्रैश होने की समस्या को ठीक किया गया. (b/157294666)
  • NonNullableMutableLiveData की लिंट जांच में अब ऐसे कई मामले शामिल किए गए हैं जिनमें null की वैल्यू, नॉन-नल टाइप पैरामीटर वाले MutableLiveData पर सेट की गई थी. (b/156002218)

वर्शन 2.3.0-alpha03

20 मई, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 रिलीज़ हो गई हैं. 2.3.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • SavedStateHandle अब लेज़ी सीरियलाइज़ेशन की सुविधा देता है. इसके तहत, किसी दी गई कुंजी के लिए setSavedStateProvider() को कॉल करने की अनुमति मिलती है. साथ ही, SavedStateProvider भी दिया जाता है, जिसे saveState() को कॉलबैक मिलेगा. ऐसा तब होगा, जब SavedStateHandle से उसकी स्थिति सेव करने के लिए कहा जाएगा. (b/155106862)
  • नए ViewTreeViewModelStoreOwner.get(View) एपीआई की मदद से, किसी View इंस्टेंस में मौजूद ViewModelStoreOwner को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05, और AppCompat 1.3.0-alpha01 पर अपग्रेड करना होगा. lifecycle-viewmodel-ktx में findViewModelStoreOwner() Kotlin एक्सटेंशन जोड़ा गया है. (aosp/1295522)

गड़बड़ियां ठीक की गईं

  • लाइफ़साइकल 2.3.0-alpha01 में रिलीज़ की गई MutableLiveData लिंट चेक को lifecycle-livedata-core-ktx आर्टफ़ैक्ट के साथ पब्लिश न होने की समस्या को ठीक किया गया. (b/155323109)

वर्शन 2.3.0-alpha02

29 अप्रैल, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SavedStateViewModelFactory अब आपको अपने कन्स्ट्रक्टर में कोई शून्य Application पास करने की अनुमति देता है, ताकि उन मामलों में बेहतर सहायता मिल सके जहां कोई भी आसानी से उपलब्ध न हो और AndroidViewModel के लिए सहायता की ज़रूरत न हो. (aosp/1285740)

गड़बड़ियां ठीक की गईं

  • एपीआई 28 और उससे पहले के वर्शन वाले डिवाइसों पर, क्लास की पुष्टि न होने की समस्या को हल करके, कोल्ड स्टार्ट की परफ़ॉर्मेंस को बेहतर बनाया गया है. (aosp/1282118)

वर्शन 2.3.0-alpha01

4 मार्च, 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 रिलीज़ हो गया है. 2.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नए ViewTreeLifecycleOwner.get(View) एपीआई की मदद से, किसी View इंस्टेंस में मौजूद LifecycleOwner को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको गतिविधि 1.2.0-alpha01 और फ़्रैगमेंट 1.3.0-alpha01 पर अपग्रेड करना होगा. findViewTreeLifecycleOwner Kotlin एक्सटेंशन, lifecycle-runtime-ktx में उपलब्ध है. (aosp/1182361, aosp/1182956)
  • Lint की एक नई जांच जोड़ी गई है. यह जांच, Kotlin में नॉन-नल के तौर पर तय किए गए MutableLiveData पर null वैल्यू सेट करने पर आपको चेतावनी देती है. यह विकल्प, livedata-core-ktx या livedata-ktx आर्टफ़ैक्ट का इस्तेमाल करने पर उपलब्ध होता है. (aosp/1154723, aosp/1159092)
  • एक नया lifecycle-runtime-testing आर्टफ़ैक्ट उपलब्ध है, जो TestLifecycleOwner उपलब्ध कराता है. यह LifecycleOwner को लागू करता है और थ्रेड सेफ़ म्यूटेबल Lifecycle उपलब्ध कराता है. (aosp/1242438)

गड़बड़ियां ठीक की गईं

  • lifecycle-runtime आर्टफ़ैक्ट का पैकेज का नाम अब यूनीक है. (aosp/1187196)

वर्शन 2.2.0

ViewModel-Savedstate का वर्शन 2.2.0

5 फ़रवरी, 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.

लाइफ़साइकल ViewModel SavedState अब लाइफ़साइकल के अन्य आर्टफ़ैक्ट के साथ एक ही वर्शन शेयर करता है. 2.2.0 का व्यवहार, 1.0.0 के व्यवहार से मेल खाता है.

वर्शन 2.2.0

22 जनवरी, 2020

androidx.lifecycle:lifecycle-*:2.2.0 रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.

2.1.0 के बाद किए गए ज़रूरी बदलाव

  • लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया lifecycle-runtime-ktx आर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए, lifecycle-livedata-ktx को भी बड़ा किया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें.
  • ViewModelProviders.of() का इस्तेमाल बंद किया गया है: ViewModelProviders.of() का इस्तेमाल बंद कर दिया गया है. फ़्रैगमेंट 1.2.0 का इस्तेमाल करते समय, वही फ़ंक्शन पाने के लिए, नए ViewModelProvider(ViewModelStoreOwner) कन्स्ट्रक्टर में Fragment या FragmentActivity पास किया जा सकता है.
  • lifecycle-extensions आर्टफ़ैक्ट का इस्तेमाल बंद होना: ViewModelProviders.of() के बंद होने के बाद, इस रिलीज़ में lifecycle-extensions में मौजूद आखिरी एपीआई को भी बंद कर दिया गया है. इसलिए, अब इस आर्टफ़ैक्ट को पूरी तरह से बंद माना जाना चाहिए. हमारा सुझाव है कि आप lifecycle-extensions के बजाय, लाइफ़साइकल के उन आर्टफ़ैक्ट का इस्तेमाल करें जिनकी आपको ज़रूरत है. जैसे, अगर LifecycleService का इस्तेमाल किया जा रहा है, तो lifecycle-service और अगर ProcessLifecycleOwner का इस्तेमाल किया जा रहा है, तो lifecycle-process. ऐसा इसलिए, क्योंकि आने वाले समय में lifecycle-extensions की 2.3.0 रिलीज़ नहीं होगी.
  • Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर: लाइफ़साइकल का एनोटेशन प्रोसेसर डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है. अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग भाषा में लिखा गया है, तो इसके बजाय DefautLifecycleObserver का इस्तेमाल किया जा सकता है. अगर इसे Java 7 प्रोग्रामिंग भाषा में लिखा गया है, तो LifecycleEventObserver का इस्तेमाल किया जा सकता है.

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 रिलीज़ हो गया है. 2.2.0-rc03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ViewModelStore में मॉक किया गया ViewModel स्टोर करने और बाद में डिफ़ॉल्ट फ़ैक्ट्री के साथ क्वेरी करने पर होने वाली गड़बड़ी को ठीक किया गया.
  • launchWhenCreated और मिलते-जुलते तरीकों में Dispatchers.Main.immediate के इस्तेमाल को ठीक करें, ताकि लाइफ़साइकल इवेंट के दौरान उन्हें सिंक करके कॉल किया जा सके. (aosp/1156203)

बाहरी योगदान

  • समस्या को ठीक करने में मदद करने के लिए, Anders Järleberg को धन्यवाद! (aosp/1156203)
  • इनलाइन किए गए फ़ंक्शन को लागू करने की समीक्षा करने के लिए, Jetbrains के Vsevolod Tolstopyatov को धन्यवाद.

डिपेंडेंसी में बदलाव

  • लाइफ़साइकल एक्सटेंशन अब फ़्रैगमेंट 1.2.0-rc03 पर निर्भर करता है.

वर्शन 2.2.0-rc02

7 नवंबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 रिलीज़ हो गया है. 2.2.0-rc02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लाइब्रेरी के ProGuard सेटअप में एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, टारगेट एपीआई लेवल 29 से कम होने पर, एपीआई 28 और उसके बाद के वर्शन पर चलने वाले डिवाइसों पर असर डालती थी. (b/142778206)

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 रिलीज़ हो गया है. 2.2.0-rc01 वर्शन में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इस समस्या की वजह से, launchWhenCreated और उससे जुड़े तरीके, लाइफ़साइकल के तरीके से एक फ़्रेम बाद चलेंगे. ऐसा इसलिए होगा, क्योंकि Dispatchers.Main.immediate के बजाय Dispatchers.Main का इस्तेमाल किया गया है. (aosp/1145596)

बाहरी योगदान

  • समस्या को ठीक करने में मदद करने के लिए, Nicklas Ansman को धन्यवाद! (aosp/1145596)

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 रिलीज़ हो गया है. 2.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Lifecycle 2.2.0-alpha05 में ProcessLifecycleOwner के क्रम में हुई गड़बड़ी को ठीक किया गया. साथ ही, Android 10 डिवाइसों पर गतिविधि के LifecycleOwner को 'शुरू किया गया' और 'फिर से शुरू किया गया' पर ले जाने की गड़बड़ी को भी ठीक किया गया. (aosp/1128132)
  • लाइफ़साइकल 2.2.0-alpha05 में हुई एक समस्या को ठीक किया गया है. इसकी वजह से, lifecycle-process के 2.0.0 या 2.1.0 वर्शन का इस्तेमाल करने पर NullPointerException दिखता था. (b/141536990)

वर्शन 2.2.0-alpha05

18 सितंबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 रिलीज़ हो गया है. 2.2.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • कोरूटीन लाइव डेटा बिल्डर में रेस कंडीशन को ठीक किया गया. b/140249349

वर्शन 2.2.0-alpha04

5 सितंबर, 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope, और liveData के लागू होने की प्रक्रिया में, अब Dispatchers.Main के बजाय Dispatchers.Main.immediate का इस्तेमाल किया जाता है. (b/139740492)

बाहरी योगदान

  • Dispatchers.Main.immediate पर माइग्रेट करने के लिए, Nicklas Ansman को धन्यवाद! (aosp/1106073)

वर्शन 2.2.0-alpha03

7 अगस्त, 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

एपीआई में हुए बदलाव

  • ViewModelProviders.of() का अब इस्तेमाल नहीं किया जा सकता. वही फ़ंक्शन पाने के लिए, नए ViewModelProvider(ViewModelStoreOwner) कन्स्ट्रक्टर में Fragment या FragmentActivity पास किया जा सकता है. (aosp/1009889)

वर्शन 2.2.0-alpha02

2 जुलाई, 2019

androidx.lifecycle:*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • LiveDataScope.initialValue को LiveDataScope.latestValue से बदल दिया गया है, जो liveData ब्लॉक की उत्सर्जित की गई मौजूदा वैल्यू को ट्रैक करेगा.
  • liveData बिल्डर में एक नया ओवरलोड जोड़ा गया है, जो timeout पैरामीटर को Duration टाइप के तौर पर लेता है

वर्शन 2.2.0-alpha01

7 मई, 2019

androidx.lifecycle:*:2.2.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं. इनकी मदद से, Lifecycle और LiveData के लिए Kotlin कोरुटिन का इस्तेमाल किया जा सकता है. इनके बारे में ज़्यादा जानकारी वाला दस्तावेज़ यहां देखा जा सकता है.

ViewModel-SavedState का वर्शन 1.0.0

वर्शन 1.0.0

22 जनवरी, 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 रिलीज़ हो गया है. 1.0.0 वर्शन में ये बदलाव शामिल हैं.

1.0.0 में मौजूद अहम सुविधाएं

  • नई SavedStateHandle क्लास जोड़ी गई. इससे आपकी ViewModel क्लास, सेव की गई स्थिति को ऐक्सेस कर सकती हैं और उसमें योगदान दे सकती हैं. यह ऑब्जेक्ट, ViewModel क्लास के कन्स्ट्रक्टर में और फ़्रैगमेंट और AppCompatActivity की डिफ़ॉल्ट फ़ैक्ट्री में मिल सकता है. साथ ही, SavedStateHandle अपने-आप इंजेक्ट हो जाएगा.
  • AbstractSavedStateViewModelFactory जोड़ा गया. इसकी मदद से, अपने ViewModel के लिए कस्टम फ़ैक्ट्री बनाई जा सकती हैं और उन्हें SavedStateHandle का ऐक्सेस दिया जा सकता है.

ViewModel-Savedstate वर्शन 1.0.0-rc03

4 दिसंबर, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 रिलीज़ हो गया है. 1.0.0-rc03 वर्शन में ये कमिट शामिल हैं.

डिपेंडेंसी में बदलाव

  • लाइफ़साइकल ViewModel SavedState अब लाइफ़साइकल 2.2.0-rc03 पर निर्भर करता है.

Viewmodel-Savedstate वर्शन 1.0.0-rc02

7 नवंबर, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 रिलीज़ हो गया है. 1.0.0-rc02 वर्शन में ये कमिट शामिल हैं.

डिपेंडेंसी में बदलाव

  • अब यह लाइफ़साइकल 2.2.0-rc02 पर निर्भर करता है.

ViewModel-SavedState वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 को 1.0.0-beta01 में किए गए बदलावों के बिना रिलीज़ किया गया है. 1.0.0-rc01 वर्शन में ये कमिट शामिल हैं.

ViewModel-Savedstate वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 रिलीज़ हो गया है. 1.0.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Activity.onActivityResult() में पहली बार SavedState ViewModel को ऐक्सेस करने पर IllegalStateException दिखने की समस्या को ठीक किया गया है. (b/139093676)
  • AbstractSavedStateViewModelFactory का इस्तेमाल करते समय IllegalStateException से जुड़ी समस्या को ठीक किया गया. (b/141225984)

ViewModel-SavedState का वर्शन 1.0.0-alpha05

18 सितंबर, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 रिलीज़ हो गया है. 1.0.0-alpha05 वर्शन में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • SavedStateViewModelFactory अब AbstractSavedStateViewModelFactory को एक्सटेंड नहीं करता और SavedStateHandle सिर्फ़ उन ViewModels के लिए बनाया जाता है जिनके लिए अनुरोध किया गया है (aosp/1113593)

ViewModel-SavedState का वर्शन 1.0.0-alpha03

7 अगस्त, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

बदलावों की जानकारी

ViewModel-SavedState का वर्शन 1.0.0-alpha02

2 जुलाई, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • SavedStateHandle.getLiveData() ओवरलोड जोड़ा गया, जो डिफ़ॉल्ट वैल्यू स्वीकार करता है.

एपीआई में हुए बदलाव

  • SavedStateVMFactory का नाम बदलकर SavedStateViewModelFactory कर दिया गया.
  • AbstractSavedStateVMFactory का नाम बदलकर AbstractSavedStateViewModelFactory कर दिया गया.

ViewModel-Savedstate वर्शन 1.0.0-alpha01

13 मार्च, 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 रिलीज़ हो गया है. इस शुरुआती रिलीज़ का पूरा कमिट लॉग यहां देखा जा सकता है.

नई सुविधाएं

  • अब ViewModels, savedstate में योगदान दे सकता है. इसके लिए, आपको हाल ही में लॉन्च किए गए व्यूमॉडल की फ़ैक्ट्री SavedStateVMFactory का इस्तेमाल करना होगा. साथ ही, आपके ViewModel में एक कन्स्ट्रक्टर होना चाहिए, जो पैरामीटर के तौर पर SavedStateHandleऑब्जेक्ट स्वीकार करता हो.

वर्शन 2.1.0

2.0.0 के बाद किए गए अहम बदलाव

  • लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर, LifecycleEventObserver जोड़ा गया. यह छिपी हुई GenericLifecycleObserver क्लास के बजाय, एक सार्वजनिक एपीआई है.
  • LiveData.observe और Transformations.* तरीकों के लिए ktx एक्सटेंशन जोड़े गए.
  • Transformations.distinctUntilChanged जोड़ा गया, जो एक नया LiveData ऑब्जेक्ट बनाता है. यह तब तक कोई वैल्यू नहीं भेजता, जब तक सोर्स LiveData की वैल्यू में बदलाव नहीं किया जाता.
  • एक्सटेंशन प्रॉपर्टी ViewModel.viewModelScope जोड़कर, ViewModels में कोरूटीन की सुविधा जोड़ी गई.

वर्शन 2.1.0

5 सितंबर, 2019

androidx.lifecycle:lifecycle-*:2.1.0 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

वर्शन 2.1.0-rc01

2 जुलाई, 2019

androidx.lifecycle:*:2.1.0-rc01 को androidx.lifecycle:*:2.1.0-beta01 में किए गए बदलावों के बिना रिलीज़ किया गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

वर्शन 2.1.0-beta01

7 मई, 2019

androidx.lifecycle:*:2.1.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • लाइफ़साइकल को बीटा वर्शन में अपग्रेड कर दिया गया है: liveData ट्रांसफ़ॉर्मेशन और ऑब्ज़र्वेशन के लिए एक्सटेंशन फ़ंक्शन, ViewModel प्रॉपर्टी डेलिगेशन के साथ शुरू करने की सुविधा वगैरह जैसे एपीआई, पिछले अल्फा वर्शन में लॉन्च किए गए थे. ये अब स्थिर हो गए हैं और इनमें कोई बदलाव नहीं होगा.

वर्शन 2.1.0-alpha04

3 अप्रैल, 2019

androidx.lifecycle:*:2.1.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • अहम बदलाव: by viewModels() और by activityViewModels() के पीछे मौजूद एपीआई को बदल दिया गया है, ताकि सिर्फ़ ViewModelStoreOwner के बजाय सीधे ViewModelStore के साथ काम किया जा सके. (aosp/932932)

वर्शन 2.1.0-alpha03

13 मार्च, 2019

androidx.lifecycle:*:2.1.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए सभी कमिट की पूरी सूची यहां देखी जा सकती है.

एपीआई में हुए बदलाव

  • ViewModelProvider.KeyedFactory हटाया गया. ViewModelProvider.Factory के अलावा दूसरा इंटरफ़ेस, नई सुविधाओं के साथ अच्छी तरह से काम नहीं करता था. इसकी वजह यह है कि Kotlin by viewmodels {} में प्रॉपर्टी डीलेगेशन की सुविधा है. (aosp/914133)

वर्शन 2.1.0-alpha02

30 जनवरी, 2019

androidx.lifecycle 2.1.0-alpha02 रिलीज़ हो गया है.

एपीआई में हुए बदलाव

  • LifecycleRegistry में अब setCurrentState() तरीका शामिल है, जो अब काम न करने वाले setState() तरीके की जगह लेता है. (aosp/880715)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें ViewModelStore को मिटाने पर, मॉक ViewModel इंस्टेंस क्रैश हो जाते थे. b/122273087

वर्शन 2.1.0-alpha01

17 दिसंबर, 2018

androidx.lifecycle 2.1.0-alpha01 रिलीज़ हो गया है.

नई सुविधाएं

  • लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर, LifecycleEventObserver जोड़ा गया. यह छिपी हुई GenericLifecycleObserver क्लास के बजाय, एक सार्वजनिक एपीआई है.
  • LiveData.observe और Transformations.* तरीकों के लिए ktx एक्सटेंशन जोड़े गए.
  • Transformations.distinctUntilChanged तरीका जोड़ा गया. इससे एक नया LiveData ऑब्जेक्ट बनता है, जो तब तक कोई वैल्यू नहीं दिखाता, जब तक सोर्स LiveData की वैल्यू में बदलाव नहीं किया जाता.
  • ViewModels में कोरूटीन की सुविधा: एक्सटेंशन प्रॉपर्टी ViewModel.viewModelScope जोड़ी गई.
  • ViewModelProvider.KeyedFactory जोड़ा गया, जो ViewModels के लिए फ़ैक्ट्री है. यह create तरीके में key और Class को स्वीकार करती है.

वर्शन 2.0.0

वर्शन 2.0.0

21 सितंबर, 2018

लाइफ़साइकल 2.0.0 को ViewModel में 2.0.0-rc01 से मिली एक गड़बड़ी को ठीक करके रिलीज़ किया गया है.

गड़बड़ियां ठीक की गईं

  • ViewModel के लिए ProGuard का एक ऐसा नियम ठीक किया गया है जिसकी वजह से, कन्स्ट्रक्टर को गलत तरीके से हटा दिया गया था b/112230489

वर्शन 2.0.0-beta01

2 जुलाई, 2018

गड़बड़ियां ठीक की गईं

  • LifecycleObserver के लिए ProGuard नियम को ठीक किया गया, ताकि सिर्फ़ लागू किए गए इंटरफ़ेस ही शामिल किए जाएं, न कि सब-इंटरफ़ेस b/71389427
  • कोड को छोटा करने और उसे अस्पष्ट बनाने की सुविधा देने के लिए, ViewModel के ProGuard नियमों को ठीक किया गया

AndroidX से पहले के वर्शन

Lifecycle के AndroidX से पहले के वर्शन के लिए, ये डिपेंडेंसी शामिल करें:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

वर्शन 1.1.1

21 मार्च, 2018

सिर्फ़ एक छोटा बदलाव: android.arch.core.util.Function को arch:runtime से arch:common में ले जाया गया है. इससे, इसे रनटाइम डिपेंडेंसी के बिना इस्तेमाल किया जा सकता है. उदाहरण के लिए, नीचे दिए गए paging:common में.

lifecycle:common, lifecycle:runtime पर निर्भर करता है. इसलिए, इस बदलाव से lifecycle:runtime पर सीधे तौर पर असर नहीं पड़ता. सिर्फ़ वे मॉड्यूल सीधे तौर पर lifecycle:common पर निर्भर करते हैं जिन पर पेजिंग का असर पड़ता है.

वर्शन 1.1.0

22 जनवरी, 2018

पैकेजिंग में बदलाव

अब नई और बहुत छोटी डिपेंडेंसी उपलब्ध हैं:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

एपीआई में हुए बदलाव

  • अब LifecycleActivity और LifecycleFragment को हटा दिया गया है - कृपया FragmentActivity, AppCompatActivity या सहायता Fragment का इस्तेमाल करें.
  • @NonNull एनोटेशन, ViewModelProviders और ViewModelStores में जोड़े गए हैं
  • ViewModelProviders कन्स्ट्रक्टर को बंद कर दिया गया है - कृपया सीधे तौर पर इसके स्टैटिक तरीकों का इस्तेमाल करें
  • ViewModelProviders.DefaultFactory का इस्तेमाल बंद कर दिया गया है - कृपया ViewModelProvider.AndroidViewModelFactory का इस्तेमाल करें
  • स्टैटिक ViewModelProvider.AndroidViewModelFactory.getInstance(Application) तरीका जोड़ा गया है, ताकि ViewModel और AndroidViewModel इंस्टेंस बनाने के लिए, स्टैटिक Factory को वापस पाया जा सके.