लाइफ़साइकल

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

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

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

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

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

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

Kotlin

ग्रूवी

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

Java

ग्रूवी

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

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

सुझाव

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

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

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

वर्शन 2.9

वर्शन 2.9.0-alpha06

30 अक्टूबर, 2024

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

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

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

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

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

वर्शन 2.9.0-alpha05

16 अक्टूबर, 2024

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

वर्शन 2.9.0-alpha04

2 अक्टूबर, 2024

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

Kotlin मल्टीप्लैटफ़ॉर्म

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

वर्शन 2.9.0-alpha03

18 सितंबर, 2024

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

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

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

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

वर्शन 2.9.0-alpha02

4 सितंबर, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.9.0-alpha01

7 अगस्त, 2024

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

Kotlin Multiplatform

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8

वर्शन 2.8.7

30 अक्टूबर, 2024

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

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

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

वर्शन 2.8.6

18 सितंबर, 2024

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

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

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

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

वर्शन 2.8.5

4 सितंबर, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.4

24 जुलाई, 2024

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

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

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

वर्शन 2.8.3

July 1, 2024

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

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

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

वर्शन 2.8.2

12 जून, 2024

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

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

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

वर्शन 2.8.1

29 मई, 2024

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

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

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

वर्शन 2.8.0

14 मई, 2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

आम समस्याएं

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

वर्शन 2.8.0-rc01

1 मई, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-beta01

17 अप्रैल, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha04

3 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0-alpha03

20 मार्च, 2024

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

नई सुविधाएं

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

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

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

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha02

21 फ़रवरी, 2024

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

नई सुविधाएं

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

Kotlin कन्वर्ज़न

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.7

वर्शन 2.7.0

10 जनवरी, 2024

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

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

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

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

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

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

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

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

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

वर्शन 2.7.0-rc02

13 दिसंबर, 2023

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

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

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

वर्शन 2.7.0-rc01

15 नवंबर, 2023

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

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

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

वर्शन 2.7.0-beta01

1 नवंबर, 2023

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

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

वर्शन 2.7.0-alpha03

18 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.7.0-alpha02

6 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.7.0-alpha01

26 जुलाई, 2023

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

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

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

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

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

वर्शन 2.6

वर्शन 2.6.2

6 सितंबर, 2023

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

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

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

वर्शन 2.6.1

22 मार्च, 2023

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

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

वर्शन 2.6.0

8 मार्च, 2023

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

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

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

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

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

वर्शन 2.6.0-rc01

22 फ़रवरी, 2023

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

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

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

वर्शन 2.6.0-beta01

8 फ़रवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha05

25 जनवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha04

11 जनवरी, 2023

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

नई सुविधाएं

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

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

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

Kotlin कन्वर्ज़न

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

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

वर्शन 2.6.0-alpha02

7 सितंबर, 2022

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

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

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

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

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

वर्शन 2.6.0-alpha01

29 जून, 2022

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

नई सुविधाएं

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

वर्शन 2.5

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 2.5.0-rc02

15 जून, 2022

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

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

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

वर्शन 2.5.0-rc01

11 मई, 2022

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

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

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

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha06

6 अप्रैल, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha05

23 मार्च, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha04

9 मार्च, 2022

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

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

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

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

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

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

ViewModel CreationExtras

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

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

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

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

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

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

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

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

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

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

वर्शन 2.4

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

27 अक्टूबर, 2021

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

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

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

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

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

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

    (या)

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

वर्शन 2.4.0-rc01

29 सितंबर, 2021

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

वर्शन 2.4.0-beta01

15 सितंबर, 2021

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha03

4 अगस्त, 2021

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha02

16 जून, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha01

24 मार्च, 2021

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

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

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

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

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

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

    (या)

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

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

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

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

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

लाइफ़साइकल व्यूमॉडल कंपोज़ वर्शन 1.0.0

वर्शन 1.0.0-alpha07

16 जून, 2021

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

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

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

वर्शन 1.0.0-alpha06

2 जून, 2021

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

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

वर्शन 1.0.0-alpha05

18 मई, 2021

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

नई सुविधाएं

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

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

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

वर्शन 1.0.0-alpha04

7 अप्रैल, 2021

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

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

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

वर्शन 1.0.0-alpha03

10 मार्च, 2021

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

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

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

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

24 फ़रवरी, 2021

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

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

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

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

10 फ़रवरी, 2021

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

नई सुविधाएं

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

वर्शन 2.3.1

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

24 मार्च, 2021

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

10 फ़रवरी, 2021

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

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

  • SavedStateHandle में, पार्सल नहीं की जा सकने वाली क्लास के लिए सहायता: SavedStateHandle अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इसके लिए, आपको किसी कीवर्ड के लिए setSavedStateProvider() को कॉल करने की अनुमति मिलती है. साथ ही, एक SavedStateProvider भी दिया जाता है. जब SavedStateHandle से अपना स्टेटस सेव करने के लिए कहा जाएगा, तब saveState() को कॉलबैक मिलेगा. ऐसी कक्षाएं सेव करना जिन्हें पार्सल नहीं किया जा सकता देखें.
  • लाइफ़साइकल बिहेवियर एनफ़ोर्समेंट:
    • LifecycleRegistry, अब DESTROYED को टर्मिनल स्टेट के तौर पर लागू करता है.
    • LifecycleRegistry अब पुष्टि करता है कि उसके तरीकों को मुख्य थ्रेड पर कॉल किया जाता है. यह गतिविधियों, फ़्रैगमेंट वगैरह के लाइफ़साइकल के लिए हमेशा ज़रूरी था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश को पकड़ना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वाले LifecycleRegistry ऑब्जेक्ट के लिए, LifecycleRegistry.createUnsafe(...) का इस्तेमाल करके जांच से साफ़ तौर पर ऑप्ट आउट किया जा सकता है. हालांकि, आपको यह पक्का करना होगा कि जब इस LifecycleRegistry को अलग-अलग थ्रेड से ऐक्सेस किया जाता है, तब सही सिंक हो रहा हो.
  • लाइफ़साइकल स्टेटस और इवेंट हेल्पर: State और ट्रांज़िशन डायरेक्शन के हिसाब से Event जनरेट करने के लिए, Lifecycle.Event में downFrom(State), downTo(State), upFrom(State), upTo(State) के स्टैटिक हेल्पर तरीके जोड़े गए हैं. वह getTargetState() तरीका जोड़ा गया जो State देता है, जिससे लाइफ़साइकल, Event के बाद वाले चरण में सीधे ट्रांज़िशन करेगा.
  • withStateAtLeast: Lifecycle.withStateAtLeast एपीआई जोड़े गए हैं, जो लाइफ़साइकल स्टेटस का इंतज़ार करते हैं और स्टेटस में बदलाव होने पर, कोड के ऐसे ब्लॉक को सिंक करके चलाते हैं जिसे सस्पेंड नहीं किया जा सकता. इसके बाद, नतीजे के साथ फिर से शुरू किया जाता है. ये एपीआई, मौजूदा when* तरीकों से अलग हैं, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते और कस्टम डिस्पैचर का इस्तेमाल नहीं करते. (aosp/1326081)
  • ViewTree एपीआई: ViewTreeLifecycleOwner.get(View) और ViewTreeViewModelStoreOwner.get(View) एपीआई की मदद से, View इंस्टेंस में मौजूद LifecycleOwner और ViewModelStoreOwner को क्रमशः वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity 1.2.0 और Fragment 1.3.0 के साथ-साथ AppCompat 1.3.0-alpha01 या उसके बाद के वर्शन पर अपग्रेड करना होगा. findViewTreeLifecycleOwner और findViewTreeViewModelStoreOwner Kotlin एक्सटेंशन, lifecycle-runtime-ktx और lifecycle-viewmodel-ktx में उपलब्ध हैं.
  • LiveData.observe() Kotlin एक्सटेंशन का इस्तेमाल बंद किया जा रहा है: लैम्ब्डा सिंटैक्स का इस्तेमाल करने के लिए ज़रूरी LiveData.observe() Kotlin एक्सटेंशन अब बंद कर दिया गया है. ऐसा इसलिए किया गया है, क्योंकि Kotlin 1.4 का इस्तेमाल करते समय इसकी ज़रूरत नहीं होती.

वर्शन 2.3.0-rc01

16 दिसंबर, 2020

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

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

  • SavedStateHandle के keys() तरीके को अब स्टेटस सेव होने से पहले और बाद में एक जैसा रखा गया है. इसमें अब set() और getLiveData() के साथ इस्तेमाल की गई कुंजियों के अलावा, setSavedStateProvider() के साथ पहले इस्तेमाल की गई कुंजियां भी शामिल हैं. (aosp/1517919, b/174713653)

बाहरी योगदान

वर्शन 2.3.0-beta01

1 अक्टूबर, 2020

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha07

19 अगस्त, 2020

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

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

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

वर्शन 2.3.0-alpha06

22 जुलाई, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

24 जून, 2020

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

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

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

वर्शन 2.3.0-alpha04

10 जून, 2020

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

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

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

वर्शन 2.3.0-alpha03

20 मई, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.3.0-alpha02

29 अप्रैल, 2020

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

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

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

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

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

वर्शन 2.3.0-alpha01

4 मार्च, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.2.0

ViewModel-Savedstate का वर्शन 2.2.0

5 फ़रवरी, 2020

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

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

वर्शन 2.2.0

22 जनवरी, 2020

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

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

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

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

बाहरी योगदान

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

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

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

वर्शन 2.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

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

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

बाहरी योगदान

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

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

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

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

वर्शन 2.2.0-alpha05

18 सितंबर, 2019

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

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

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

वर्शन 2.2.0-alpha04

5 सितंबर, 2019

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

नई सुविधाएं

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

बाहरी योगदान

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

वर्शन 2.2.0-alpha03

7 अगस्त, 2019

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

नई सुविधाएं

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

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

वर्शन 2.2.0-alpha02

2 जुलाई, 2019

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

एपीआई में किए गए बदलाव

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

वर्शन 2.2.0-alpha01

7 मई, 2019

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

नई सुविधाएं

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

ViewModel-SavedState का वर्शन 1.0.0

वर्शन 1.0.0

22 जनवरी, 2020

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

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

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

ViewModel-Savedstate वर्शन 1.0.0-rc03

4 दिसंबर, 2019

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

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

  • Lifecycle ViewModel सेव किया गया स्टेट, अब लाइफ़साइकल 2.2.0-rc03 पर निर्भर करता है.

Viewmodel-Savedstate वर्शन 1.0.0-rc02

7 नवंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

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

ViewModel-Savedstate वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha05

18 सितंबर, 2019

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

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

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

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

7 अगस्त, 2019

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

बदलाव

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

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

ViewModel-Savedstate वर्शन 1.0.0-alpha01

13 मार्च, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0

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

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

वर्शन 2.1.0

5 सितंबर, 2019

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

वर्शन 2.1.0-rc01

2 जुलाई, 2019

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

वर्शन 2.1.0-beta01

7 मई, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0-alpha04

3 अप्रैल, 2019

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

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

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

वर्शन 2.1.0-alpha03

13 मार्च, 2019

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

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

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

वर्शन 2.1.0-alpha02

30 जनवरी, 2019

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

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

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

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

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

वर्शन 2.1.0-alpha01

17 दिसंबर, 2018

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

नई सुविधाएं

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

वर्शन 2.0.0

वर्शन 2.0.0

21 सितंबर, 2018

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

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

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

वर्शन 2.0.0-beta01

2 जुलाई, 2018

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

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

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

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

dependencies {
    def lifecycle_version = "1.1.1"

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

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

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

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

वर्शन 1.1.1

21 मार्च, 2018

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

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

वर्शन 1.1.0

22 जनवरी, 2018

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

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

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

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

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