लाइफ़साइकल

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

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

सह-प्रॉडक्ट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
lifecycle-* 2.9.2 - - -
lifecycle-viewmodel-navigation3 - - - 1.0.0-alpha03
इस लाइब्रेरी को पिछली बार इस तारीख को अपडेट किया गया था: 16 जुलाई, 2025

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

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

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

Kotlin

ग्रूवी

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

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

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

        // ViewModel integration with Navigation3
        implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03"

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

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

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

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

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

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

Kotlin

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

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

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

        // ViewModel integration with Navigation3
        implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03")

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

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

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

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

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

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

Java

ग्रूवी

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

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

सुझाव/राय दें या शिकायत करें

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

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

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

Lifecycle ViewModel Navigation3 Version 1.0.0

वर्शन 1.0.0-alpha03

2 जुलाई, 2025

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

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

  • Lifecycle ViewModel Navigation 3 अब Navigation3 Alpha05 पर निर्भर करता है

वर्शन 1.0.0-alpha02

18 जून, 2025

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

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

वर्शन 1.0.0-alpha01

23 मई, 2025

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

नई सुविधाएं

  • Lifecycle ViewModel Navigation3, Navigation3 के साथ बनाई गई एक नई लाइब्रेरी है. इसे ViewModels के साथ इंटिग्रेशन की सुविधा देने के लिए बनाया गया है. androidx.lifecycle:lifecycle-viewmodel-navigation3 आर्टफ़ैक्ट, ViewModelStoreNavEntryDecorator उपलब्ध कराता है. यह हर NavEntry के कॉन्टेंट को यूनीक ViewModelStoreOwner उपलब्ध कराता है. यह rememberViewModelStoreNavEntryDecorator() भी उपलब्ध कराता है, ताकि यह पक्का किया जा सके कि कॉन्फ़िगरेशन में बदलाव होने पर डेकोरेटर को सही तरीके से मैनेज किया जा रहा है.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()

NavDisplay(
  ,
  entryDecorators =
  listOf(
    rememberSceneSetupNavEntryDecorator(),
    rememberSavedStateNavEntryDecorator(),
    viewModelDecorator
  )
)

वर्शन 2.9

वर्शन 2.9.2

16 जुलाई, 2025

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

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

  • लाइफ़साइकल आर्टफ़ैक्ट में नए Kotlin Multiplatform (KMP) टारगेट जोड़े गए. लाइफ़साइकल अब इन प्लैटफ़ॉर्म पर काम करता है: JVM (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). ध्यान दें कि *-compose आर्टफ़ैक्ट में कोई नया केएमपी टारगेट नहीं जोड़ा गया है, क्योंकि यह Compose 1.9 की स्टेबल रिलीज़ पर निर्भर करता है. (I01cb8).

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

  • लाइफ़साइकल अब एनोटेशन 1.9.1 पर निर्भर करता है, ताकि नए केएमपी टारगेट (Ic9e4f, b/397701294) के लिए सहायता चालू की जा सके.

वर्शन 2.9.1

4 जून, 2025

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

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

  • SavedStateHandle.remove(key) के SavedStateHandle.getMutableStateFlow(key) स्टेटस को हटाने से जुड़ी समस्या ठीक की गई. (d5f939, b/418746333)

वर्शन 2.9.0

7 मई, 2025

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

2.8.0 के बाद हुए अहम बदलाव

  • androidx.lifecycle:lifecycle-viewmodel-testing का नया KMP आर्टफ़ैक्ट उपलब्ध है. इसमें ViewModels को अलग से टेस्ट करने के लिए, ViewModelScenario क्लास मिलती है. साथ ही, इसमें onCleared और SavedStateHandle के साथ-साथ, recreate() के ज़रिए प्रोसेस डेथ और रीक्रिएशन को टेस्ट करने की सुविधा भी मिलती है.
  • MutableStateFlow को वापस पाने के लिए, SavedStateHandle में getMutableStateFlow जोड़ें. यह नया फ़ंक्शन, सिर्फ़ कुंजी के साथ काम करता है. इसका इस्तेमाल getLiveData के साथ नहीं किया जा सकता. अगर एक ही स्थिति को ऐक्सेस करने के लिए, दोनों का इस्तेमाल किया जाता है, तो इसे अपवाद माना जाएगा.
  • CreationExtras में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससे CreationExtras के साथ in, +=, और + का इस्तेमाल किया जा सकता है.

KotlinX Serialization Support

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

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

Kotlin Multiplatform

  • lifecycle-testing मॉड्यूल अब KMP के साथ काम करता है. इसमें TestLifecycleOwner जैसे एपीआई शामिल हैं.
  • lifecycle-viewmodel-savedstate मॉड्यूल अब KMP के साथ काम करता है. इसमें SavedStateHandle जैसे एपीआई शामिल हैं.
  • androidx.compose.ui.platform.LocalLifecycleOwner अब सामान्य सोर्स सेट में उपलब्ध है.
  • NewInstanceFactory अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है.

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

  • Lifecycle.DESTROYED स्थिति टर्मिनल है. अब Lifecycle को इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश करने पर, IllegalStateException दिखेगा.
  • SavedStateHandle में अब ऐसे SavedStateProvider.saveState() शामिल नहीं हैं जिनमें Bundle की वैल्यू खाली है.

वर्शन 2.9.0-rc01

23 अप्रैल, 2025

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

वर्शन 2.9.0-beta01

9 अप्रैल, 2025

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

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

  • Lifecycle ViewModel Compose अब Compose Runtime 1.7.1 और इसके बाद के वर्शन की तरह ही Kotlin Multiplatform सेटअप का इस्तेमाल करता है. -desktop आर्टफ़ैक्ट अब हटा दिए गए हैं और -jvmStubs और -linuxx64Stubs आर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके. (I5cb14, b/406592090)

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

  • यह लाइब्रेरी अब Kotlin 2.0 भाषा के लेवल को टारगेट करती है. इसके लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है. (Idb6b5)
  • Lifecycle ViewModel Compose अब Compose 1.7.8 पर निर्भर करता है. (I5cb14, b/406592090)

वर्शन 2.9.0-alpha13

26 मार्च, 2025

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

वर्शन 2.9.0-alpha12

12 मार्च, 2025

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

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

  • ViewModelProvider.get के साथ @MainThread एनोटेशन जोड़ें. यह सुविधा, KMP के साथ काम करने वाले सभी प्लैटफ़ॉर्म पर उपलब्ध है. (I7e8dd, b/397736115)
  • SavedState*Delegates का नाम बदलकर SavedState*Delegate करें. (I8589b, b/399629301)

वर्शन 2.9.0-alpha11

26 फ़रवरी, 2025

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

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

  • saved() डेलिगेट (I39b3a) में SavedStateConfig पैरामीटर जोड़ें

वर्शन 2.9.0-alpha10

12 फ़रवरी, 2025

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

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

  • MutableStateSerializer को lifecycle-viewmodel-compose से savedstate-compose में ले जाएं. (I4f690, b/378895074)

बाहरी योगदान

  • यह कंपोज़िशन में Lifecycle::currentState को कॉल करने के लिए, नई Lint समस्या जोड़ता है. इसके बजाय, यह currentStateAsalue().value का इस्तेमाल करने का सुझाव देता है, ताकि यह पक्का किया जा सके कि लाइफ़साइकल की स्थिति में बदलाव होने पर, कंपोज़िशन सही तरीके से फिर से कंपोज़ हो. धन्यवाद स्टीवन शोएन! (Iad484)

वर्शन 2.9.0-alpha09

29 जनवरी, 2025

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

नई सुविधाएं

  • androidx.compose.runtime.MutableState को सीरीज़ के फ़ॉर्मैट में रिलीज़ करने के लिए MutableStateSerializer जोड़ें. (Idfc48, b/378895074)

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

  • डिफ़ॉल्ट पैरामीटर (Icd1c1) के साथ, ओवरलोड किए गए SavedStateHandle.saved() डेलिगेट फ़ंक्शन बदलें
  • AbstractSavedStateViewModelFactory के इस्तेमाल पर पाबंदी लगा दी गई है, क्योंकि यह हर ViewModel के लिए एक SavedStateHandle बनाता है. इससे बेवजह ओवरहेड बढ़ता है. ViewModel को ज़्यादा असरदार बनाने के लिए, CreationExtras.createSavedStateHandle के साथ ViewModelProvider.Factory का इस्तेमाल करें. (Ia920b, b/388590327)

वर्शन 2.9.0-alpha08

11 दिसंबर, 2024

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

नई सुविधाएं

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

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

  • नाम रखने के तरीके और पैकेज के संगठन को SavedStateRegistryOwnerDelegate (I8c135, b/376026744) के साथ ज़्यादा एक जैसा बनाएं

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

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

वर्शन 2.9.0-alpha07

13 नवंबर, 2024

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

Kotlin Multiplatform के साथ काम करने की सुविधा

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

KotlinX Serialization Support

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

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

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

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

वर्शन 2.9.0-alpha06

30 अक्टूबर, 2024

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

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

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

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

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

वर्शन 2.9.0-alpha05

16 अक्टूबर, 2024

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

वर्शन 2.9.0-alpha04

2 अक्टूबर, 2024

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

Kotlin Multiplatform

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

वर्शन 2.9.0-alpha03

18 सितंबर, 2024

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

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

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

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

वर्शन 2.9.0-alpha02

4 सितंबर, 2024

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

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

  • लाइफ़साइकल 2.8.5 से: androidx.lifecycle.ReportFragment ProGuard के नियमों को अपडेट करें, ताकि कोड को अस्पष्ट करने की अनुमति दी जा सके . (ff898e1)

बाहरी योगदान

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

वर्शन 2.9.0-alpha01

7 अगस्त, 2024

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

Kotlin Multiplatform

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8

वर्शन 2.8.7

30 अक्टूबर, 2024

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

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

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

वर्शन 2.8.6

18 सितंबर, 2024

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

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

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

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

वर्शन 2.8.5

4 सितंबर, 2024

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

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

  • androidx.lifecycle.ReportFragment ProGuard के नियमों को अपडेट करें, ताकि कोड को उलझाया जा सके . (ff898e1)

बाहरी योगदान

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

वर्शन 2.8.4

24 जुलाई, 2024

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

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

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

वर्शन 2.8.3

July 1, 2024

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

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

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

वर्शन 2.8.2

12 जून, 2024

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

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

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

वर्शन 2.8.1

29 मई, 2024

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

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

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

वर्शन 2.8.0

14 मई, 2024

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

2.7.0 के बाद हुए ज़रूरी बदलाव

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

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

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

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

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

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

लाइफ़साइकल Kotlin Multiplatform के साथ काम करता है

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

इन आर्टफ़ैक्ट पर असर पड़ा है:

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

ViewModel Kotlin Multiplatform के साथ काम करता है

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

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

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

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

इन आर्टफ़ैक्ट पर असर पड़ा है:

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

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

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

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

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

वर्शन 2.8.0-rc01

1 मई, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-beta01

17 अप्रैल, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha04

3 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0-alpha03

20 मार्च, 2024

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

नई सुविधाएं

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

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

Kotlin Multiplatform के साथ काम करने की सुविधा

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha02

21 फ़रवरी, 2024

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

नई सुविधाएं

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

Kotlin कन्वर्ज़न

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

Kotlin Multiplatform के साथ काम करने की सुविधा

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

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

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

बाहरी योगदान

  • Jetbrains के इवान मैटकोव का धन्यवाद. उन्होंने Lifecycle को Kotlin Multiplatform पर माइग्रेट करने में हमारी मदद की. (aosp/2926690, I0c5ac, If445d)

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.7

वर्शन 2.7.0

10 जनवरी, 2024

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

2.6.0 के बाद हुए अहम बदलाव

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

लाइफ़साइकल इवेंट की निगरानी करना

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

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

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

  • मौजूदा Lifecycle.State को अब Lifecycle.currentStateFlow प्रॉपर्टी के ज़रिए देखा जा सकता है. यह StateFlow दिखाता है, जिसमें value मौजूदा Lifecycle.State होता है.
  • Jetpack Compose का इस्तेमाल करने वाले लोग, Lifecycle.currentStateAsState() एक्सटेंशन का इस्तेमाल करके, Lifecycle.State को सीधे तौर पर 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 फ़्रेमवर्क की वजह से टाइप की जानकारी मिट जाती है. इसलिए, कस्टम पार्सलेबल के ऐरे के लिए अतिरिक्त काम करना पड़ता है. जैसे, सही टाइप का टाइप किया गया ऐरे मैन्युअल तरीके से बनाना. साथ ही, get, getLiveData, और getStateFlow के दस्तावेज़ में अब इस सीमा के बारे में खास तौर पर बताया गया है. (I0b55a)

वर्शन 2.7.0-rc01

15 नवंबर, 2023

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

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

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

वर्शन 2.7.0-beta01

1 नवंबर, 2023

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

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

वर्शन 2.7.0-alpha03

18 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.7.0-alpha02

6 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.7.0-alpha01

26 जुलाई, 2023

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

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

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

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

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

वर्शन 2.6

वर्शन 2.6.2

6 सितंबर, 2023

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

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

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

वर्शन 2.6.1

22 मार्च, 2023

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

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

वर्शन 2.6.0

8 मार्च, 2023

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

2.5.0 के बाद हुए ज़रूरी बदलाव

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

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

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

वर्शन 2.6.0-rc01

22 फ़रवरी, 2023

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

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

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

वर्शन 2.6.0-beta01

8 फ़रवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha05

25 जनवरी, 2023

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

Kotlin कन्वर्ज़न

  • Transformations को अब Kotlin में लिखा गया है. यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर पर Transformations.map जैसे सिंटैक्स का इस्तेमाल कर रही थीं. Kotlin कोड को अब Kotlin एक्सटेंशन के उस तरीके का इस्तेमाल करना होगा जो पहले सिर्फ़ lifecycle-livedata-ktx का इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय, इन तरीकों के ऐसे वर्शन इस्तेमाल नहीं किए जा सकते जो androidx.arch.core.util.Function तरीके का इस्तेमाल करते हैं. इनकी जगह, 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)

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

वर्शन 2.6.0-alpha02

7 सितंबर, 2022

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

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

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

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

  • Lifecycle आर्टफ़ैक्ट में अब constraints शामिल हैं. इनसे यह पक्का किया जाता है कि एक-दूसरे पर निर्भर लाइफ़साइकल आर्टफ़ैक्ट, एक ही वर्शन का इस्तेमाल करें. साथ ही, किसी एक आर्टफ़ैक्ट को अपग्रेड करने पर, अन्य डिपेंडेंसी अपने-आप अपग्रेड हो जाएं. b/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 में ये कमिट शामिल हैं.

नई सुविधाएं

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

वर्शन 2.5

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

2.4.0 के बाद हुए अहम बदलाव

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

  • ViewModel CreationExtras - कस्टम ViewModelProvider.Factory लिखते समय, अब Application या SavedStateHandle का ऐक्सेस पाने के लिए, AndroidViewModelFactory या AbstractSavedStateViewModelFactory को बढ़ाने की ज़रूरत नहीं है. इसके बजाय, ये फ़ील्ड create के नए ओवरलोड के ज़रिए, CreationExtras के तौर पर हर ViewModelProvider.Factory सबक्लास को उपलब्ध कराए जाते हैं: create(Class<T>, CreationExtras). Activity 1.5.0 और Fragment 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 Integration - lifecycle-viewmodel-compose आर्टफ़ैक्ट में अब SavedStateHandle.saveable में नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से, `ViewModel` के SavedStateHandle की मदद से rememberSaveable जैसे व्यवहार की अनुमति मिलती है.

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

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

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

    इसका इस्तेमाल आपके ViewModel कंस्ट्रक्टर में किया जा सकता है. हालांकि, viewModelScope की तरह ही इसकी लाइफ़टाइम भी बनी रहती है:

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

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

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

वर्शन 2.5.0-rc02

15 जून, 2022

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

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

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

वर्शन 2.5.0-rc01

11 मई, 2022

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

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

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

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha06

6 अप्रैल, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha05

23 मार्च, 2022

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

नई सुविधाएं

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

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

  • Java में, Lifecycle 2.3 और Lifecycle के नए वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I52c8a, b/219545060)

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

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

वर्शन 2.5.0-alpha04

9 मार्च, 2022

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

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

  • SavedStateHandle अब getStateFlow() एपीआई उपलब्ध कराता है. यह LiveData के बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए 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 उपलब्ध कराता है. इसकी मदद से, CreationExtras को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके, ViewModel क्लास को हैंडल करने के लिए लैम्डा जोड़ा जा सकता है. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose अब viewModel() एपीआई उपलब्ध कराता है. यह ViewModel इंस्टेंस बनाने के लिए, लैंबडा फ़ैक्ट्री लेता है. इसके लिए, कस्टम ViewModelProvider.Factory बनाने की ज़रूरत नहीं होती. (I97fbb, b/216688927)

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

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

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

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

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

ViewModel CreationExtras

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

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

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

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

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

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

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

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

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

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

वर्शन 2.4

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

27 अक्टूबर, 2021

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

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

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

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

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

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

    (या)

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

वर्शन 2.4.0-rc01

29 सितंबर, 2021

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

वर्शन 2.4.0-beta01

15 सितंबर, 2021

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

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

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

बाहरी योगदान

  • 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 मेथड में अब नल वैल्यू वाले सामान्य टाइप इस्तेमाल नहीं किए जा सकते. (I9b9f6)

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha02

16 जून, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha01

24 मार्च, 2021

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

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

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

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

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

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

    (या)

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

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

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

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

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

Lifecycle Viewmodel Compose वर्शन 1.0.0

वर्शन 1.0.0-alpha07

16 जून, 2021

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

एपीआई में बड़े बदलाव

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

वर्शन 1.0.0-alpha06

2 जून, 2021

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

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

वर्शन 1.0.0-alpha05

18 मई, 2021

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

नई सुविधाएं

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

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

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

वर्शन 1.0.0-alpha04

7 अप्रैल, 2021

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

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

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

वर्शन 1.0.0-alpha03

10 मार्च, 2021

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

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

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

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

24 फ़रवरी, 2021

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

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

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

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

10 फ़रवरी, 2021

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

नई सुविधाएं

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

वर्शन 2.3.1

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

24 मार्च, 2021

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

10 फ़रवरी, 2021

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

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

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

वर्शन 2.3.0-alpha06

22 जुलाई, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

24 जून, 2020

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

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

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

वर्शन 2.3.0-alpha04

10 जून, 2020

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

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

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

वर्शन 2.3.0-alpha03

20 मई, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.3.0-alpha02

29 अप्रैल, 2020

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

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

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

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

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

वर्शन 2.3.0-alpha01

4 मार्च, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.2.0

ViewModel-Savedstate वर्शन 2.2.0

5 फ़रवरी, 2020

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

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

वर्शन 2.2.0

22 जनवरी, 2020

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

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

  • लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया lifecycle-runtime-ktx आर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए, lifecycle-livedata-ktx को भी बढ़ाया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें.
  • ViewModelProviders.of() का इस्तेमाल अब नहीं किया जा सकता: ViewModelProviders.of() का इस्तेमाल अब नहीं किया जा सकता. Fragment 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 Incremental Annotation Processor: Lifecycle का एनोटेशन प्रोसेसर, डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है. अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग भाषा में लिखा गया है, तो इसके बजाय DefautLifecycleObserver का इस्तेमाल किया जा सकता है. अगर इसे Java 7 प्रोग्रामिंग भाषा में लिखा गया है, तो LifecycleEventObserver का इस्तेमाल किया जा सकता है.

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

बाहरी योगदान

  • बग ठीक करने में योगदान देने के लिए, एंडर्स जर्लबर्ग को धन्यवाद! (aosp/1156203)
  • हम Jetbrains के Vsevolod Tolstopyatov को धन्यवाद देते हैं. उन्होंने इनलाइन एक्ज़ीक्यूशन को लागू करने की समीक्षा की.

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

  • Lifecycle Extensions अब Fragment 1.2.0-rc03 पर निर्भर करता है.

वर्शन 2.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

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

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

बाहरी योगदान

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

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

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

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

वर्शन 2.2.0-alpha05

18 सितंबर, 2019

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

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

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

वर्शन 2.2.0-alpha04

5 सितंबर, 2019

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

नई सुविधाएं

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

बाहरी योगदान

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

वर्शन 2.2.0-alpha03

7 अगस्त, 2019

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

नई सुविधाएं

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

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

वर्शन 2.2.0-alpha02

2 जुलाई, 2019

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

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

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

वर्शन 2.2.0-alpha01

7 मई, 2019

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

नई सुविधाएं

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

ViewModel-SavedState वर्शन 1.0.0

वर्शन 1.0.0

22 जनवरी, 2020

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

1.0.0 वर्शन की मुख्य सुविधाएं

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

ViewModel-Savedstate वर्शन 1.0.0-rc03

4 दिसंबर, 2019

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

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

  • Lifecycle ViewModel SavedState अब Lifecycle 2.2.0-rc03 पर निर्भर करता है.

Viewmodel-Savedstate वर्शन 1.0.0-rc02

7 नवंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

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

ViewModel-Savedstate वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha05

18 सितंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha03

7 अगस्त, 2019

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

नुकसान पहुंचा सकने वाले बदलाव

ViewModel-SavedState वर्शन 1.0.0-alpha02

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

ViewModel-Savedstate वर्शन 1.0.0-alpha01

13 मार्च, 2019

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

नई सुविधाएं

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

वर्शन 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 को हटा दिया गया है. Kotlin by viewmodels {} में प्रॉपर्टी डेलिगेशन की नई सुविधाओं के साथ, ViewModelProvider.Factory के अलावा दूसरा इंटरफ़ेस ठीक से कंपोज़ नहीं हुआ. (aosp/914133)

वर्शन 2.1.0-alpha02

30 जनवरी, 2019

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

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

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

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

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

वर्शन 2.1.0-alpha01

17 दिसंबर, 2018

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

नई सुविधाएं

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

वर्शन 2.0.0

वर्शन 2.0.0

21 सितंबर, 2018

ViewModel में 2.0.0-rc01 से एक बग ठीक करने के साथ, Lifecycle 2.0.0 रिलीज़ किया गया है.

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

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

वर्शन 2.0.0-beta01

2 जुलाई, 2018

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

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

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

लाइफ़साइकल के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:

dependencies {
    def lifecycle_version = "1.1.1"

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

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

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

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

वर्शन 1.1.1

21 मार्च, 2018

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

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

वर्शन 1.1.0

22 जनवरी, 2018

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

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

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

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

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