लाइफ़साइकल

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

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

सह-प्रॉडक्ट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
lifecycle-* 2.11.0 - - 2.12.0-alpha04
lifecycle-viewmodel-navigation3 2.11.0 - - 2.12.0-alpha04
इस लाइब्रेरी को पिछली बार इस तारीख को अपडेट किया गया था: 23 सितंबर, 2026

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

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

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

Kotlin

Groovy

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

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

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

        // ViewModel integration with Navigation3
        implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.12.0-alpha04"

        // 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.11.0"
        val arch_version = "2.2.0"

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

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

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

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

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

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

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

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

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

Java

Groovy

    dependencies {
        def lifecycle_version = "2.11.0"
        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.11.0"
        val arch_version = "2.2.0"

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

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

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

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

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

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

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

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

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

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

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

नई समस्या दर्ज करने का तरीका

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

वर्शन 2.12

वर्शन 2.12.0-alpha04

23 सितंबर, 2026

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

वर्शन 2.12.0-alpha03

09 सितंबर, 2026

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

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

  • compileSdk के लिए, Compose लाइब्रेरी को 37.1 पर अपडेट किया गया है. इसके लिए, Compose का इस्तेमाल करने वाले सभी ऐप्लिकेशन और लाइब्रेरी के लिए, compileSdk को ट्रांज़िटिव तरीके से अपडेट करना होगा. (I05b0f)

वर्शन 2.12.0-alpha02

26 अगस्त, 2026

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

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

  • AutoRecreated और runOnNextRecreation अब काम नहीं करते. इनकी जगह SavedStateProvider और SavedStateRestorer का इस्तेमाल किया जाता है. (Iadc00)

वर्शन 2.12.0-alpha01

12 अगस्त, 2026

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

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

  • lifecycle-compiler एनोटेशन प्रोसेसर आर्टफ़ैक्ट को बंद कर दिया गया है. एनोटेशन प्रोसेसर का इस्तेमाल करने के बजाय, कृपया DefaultLifecycleObserver या LifecycleEventObserver पर माइग्रेट करें. (Ibf571, b/541926513)
  • SavedStateViewModelFactory और AbstractSavedStateViewModelFactory अब तुरंत फ़ेल हो जाते हैं. ऐसा तब होता है, जब दिए गए SavedStateRegistryOwner में ViewModelStoreOwner लागू नहीं होता. इससे कॉम्पोनेंट को फिर से बनाते समय, क्रैश होने में देरी नहीं होती. (Icf317)
  • LifecycleRegistry इवेंट डिसपैच में सिस्टम ट्रेसिंग जोड़ें. (Ie1f92, b/112161409)

वर्शन 2.11

वर्शन 2.11.0

17 जून, 2026

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

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

Compose में स्कोप किए गए ViewModels - ViewModels को खास यूज़र इंटरफ़ेस (जैसे, Pager पेज) से जोड़ने के लिए, ViewModelStoreProvider, rememberViewModelStoreProvider, और rememberViewModelStoreOwner को पेश किया गया है. ये कॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. साथ ही, जब कंपोज़ेबल को हाइरार्की से हटा दिया जाता है, तब ये अपने-आप मिट जाते हैं.

केएमपी के साथ काम करता है - ViewModel-Compose और ViewModel-Navigation3 अब Kotlin Multiplatform के सभी टारगेट के साथ काम करते हैं.

Navigation3 इंटिग्रेशन - ViewModelStoreNavEntryDecorator अब नेस्ट किए गए ViewModels में CreationExtras और फ़ैक्ट्रियों को ट्रांसफ़र करने के लिए, ViewModelStoreOwner को स्वीकार करता है. एक से ज़्यादा बैक स्टैक को सपोर्ट करने के लिए, नए rememberViewModelStoreNavEntryDecorator ओवरलोड का इस्तेमाल करके भी प्रोवाइडर को ऊपर ले जाया जा सकता है. removeViewModelStoreOnPop का अब इस्तेमाल नहीं किया जा सकता.

लाइफ़साइकल यूटिलिटी - इसमें ViewModelStoreOwner के लिए, रीफ़ाइड ViewModelProvider.get<VM>(key) एक्सटेंशन, लैम्ब्डा पर आधारित Lifecycle.addObserver, और डिफ़ॉल्ट फ़ैक्ट्री एक्सटेंशन जोड़े गए हैं. ViewModel.onCleared को अब @EmptySuper के साथ एनोटेट किया गया है.

अन्य बदलाव - रिफ़्लेक्शन फ़ॉलबैक हटाने के लिए, अब LocalLifecycleOwner के लिए Compose UI 1.7.0+ का इस्तेमाल करना ज़रूरी है. Compose compileSdk को अपडेट करने के लिए, AGP का कम से कम वर्शन 9.2.0 होना ज़रूरी है.

वर्शन 2.11.0-rc01

03 जून, 2026

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

वर्शन 2.11.0-beta02

19 मई, 2026

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

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

  • एक ऐसा rememberViewModelStoreNavEntryDecorator ओवरलोड जोड़ें जो ViewModelStoreProvider को स्वीकार करता हो. इससे डेवलपर, डेकोरेटर के कंपोज़िशन स्कोप से ऊपर प्रोवाइडर को होस्ट कर सकते हैं. इससे ऐसे इस्तेमाल के उदाहरणों को लागू किया जा सकता है जहां एक ही एंट्री दोनों में मौजूद है, लेकिन उसके लिए अलग-अलग स्टेट की ज़रूरत होती है. जैसे, एक से ज़्यादा बैक स्टैक को सपोर्ट करना. (Ibbbfe, b/503420425)
  • जब किसी भाई-बहन की तरह काम करने वाली कंपनी को कंपोज़िशन से हटा दिया जाता है, तो शेयर किए गए ViewModels को समय से पहले क्लियर होने से रोकें. (Ib321a)

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

  • LocalLifecycleOwner का इस्तेमाल करने के लिए, Compose UI 1.7.0 या इसके बाद का वर्शन ज़रूरी है. इससे इंटरनल रिफ़्लेक्शन फ़ॉलबैक हट जाते हैं. इससे परफ़ॉर्मेंस बेहतर होती है, लेकिन क्लाइंट के लिए डिपेंडेंसी अपग्रेड करना ज़रूरी हो जाता है. (I48e65)
  • Compose Multiplatform 1.11.0 पर अपग्रेड करते समय, JetBrains के पुराने फ़ोर्क वर्शन के साथ सिंबल डुप्लीकेट होने से रोकें. (Iccd64)
  • उस समस्या को ठीक किया गया है जिसमें डिफ़ॉल्ट पैरामीटर के साथ rememberViewModelStoreProvider का इस्तेमाल करने पर, रइकंपोज़िशन के दौरान ViewModels को गलत तरीके से हटाया जा रहा था. अब प्रोवाइडर, सिर्फ़ तब फिर से बनाता है, जब माता-पिता के मालिकाना हक या साफ़ तौर पर कुंजी में बदलाव होता है. (Ibe296, b/501792448)

वर्शन 2.11.0-beta01

22 अप्रैल, 2026

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

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

  • कुंजी के साथ और कुंजी के बिना इस्तेमाल करने के लिए, rememberViewModelStoreOwner और rememberViewModelStoreProvider को अलग-अलग फ़ंक्शन में बांटें. (Ifd154, b/500802788)

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

  • Compose compileSdk को एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)

वर्शन 2.11.0-alpha03

25 मार्च, 2026

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

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

  • ViewModelStoreProvider कंस्ट्रक्टर में parentKey को एक वैकल्पिक पैरामीटर बनाएं. इसकी डिफ़ॉल्ट वैल्यू null होगी. साथ ही, इसे parentStore या parentOwner के बाद ले जाएं. इससे, शेयर किए गए स्कोप के कोड की ज़रूरत न होने पर, इंस्टैंटिएशन आसान हो जाता है. (I66b67)
  • ViewModelStoreNavEntryDecorator अब ViewModelStore के बजाय ViewModelStoreOwner स्वीकार करता है. इससे Navigation3, पैरंट के डिफ़ॉल्ट CreationExtras और ViewModelProvider.Factory को नेस्ट किए गए ViewModels में भेज पाता है. इससे ऐप्लिकेशन-लेवल की डिपेंडेंसी के लिए सहायता मिलती है. (Ia6018, b/434651920)
  • यूनीक कुंजी का इस्तेमाल करके, ViewModelStoreProvider स्टेट को अलग करें. इससे, डिसपोज़ल के दौरान एक ही तरह की सेवा देने वाली कंपनियों को एक-दूसरे के ViewModels को अनजाने में मिटाने से रोका जा सकता है. (I59c0b, b/434651920)
  • ViewModelProvider.get<VM>(key: String) एक्सटेंशन फ़ंक्शन जोड़ें. इससे डेवलपर, Kotlin के रीफ़ाइड टाइप पैरामीटर के साथ कस्टम key का इस्तेमाल करके, ViewModels को ज़्यादा आसानी से वापस पा सकते हैं. इससे क्लास टाइप को साफ़ तौर पर पास करने की ज़रूरत नहीं पड़ती. (Ic1f59)
  • ViewModelStoreProvider में defaultArgs का इस्तेमाल करने की सुविधा जोड़ी गई है. इससे ViewModels को डिफ़ॉल्ट SavedState वैल्यू के साथ शुरू किया जा सकेगा. (I1e933, b/434651920, b/165642391)
  • removeViewModelStoreOnPop और उससे जुड़े ViewModelStoreNavEntryDecoratorDefaults को बंद कर दिया गया है. यह एपीआई, कॉन्फ़िगरेशन में किए गए बदलावों के लिए एक समाधान था. अब इन बदलावों को इंटरनल तौर पर मैनेज किया जाता है. अब पॉप पर, सभी डेकोरेटर की स्थिति को एक साथ मिटाना होगा. इसमें ViewModels भी शामिल हैं. डेकोरेटर की स्टेट को बनाए रखने के लिए, जब तक कि पिछली गतिविधियां NavDisplay को पास न हो जाएं, rememberDecoratedNavEntries एपीआई का इस्तेमाल करें. (I852d9)

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

  • क्लास का नाम दिखाने के लिए, CreationExtras.Key में toString() जोड़ें. (I5de52)

वर्शन 2.11.0-alpha02

11 मार्च, 2026

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

स्कोप किए गए ViewModels

  • इस रिलीज़ में, Compose में स्कोप किए गए ViewModelStore इंस्टेंस बनाने के लिए एपीआई पेश किए गए हैं. इससे ViewModels को यूज़र इंटरफ़ेस (यूआई) के कुछ खास स्कोप (जैसे, अलग-अलग Pager पेज या LazyList आइटम) से जोड़ा जा सकता है. ये ViewModels कॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. साथ ही, जब इनसे जुड़े कंपोज़ेबल को हाइरार्की से हमेशा के लिए हटा दिया जाता है, तब ये अपने-आप हट जाते हैं.

    // Hoist the parent provider outside the Pager.
    val provider = rememberViewModelStoreProvider()
    val pagerState = rememberPagerState(pageCount = { 5 })
    
    HorizontalPager(state = pagerState) { page ->
        // Create an owner scoped to the current page.
        val storeOwner = rememberViewModelStoreOwner(provider, key = page)
    
        // Provide the scoped owner to this composition.
        CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) {
            // ViewModel is now scoped specifically to this page.
            val viewModel: PageViewModel = viewModel()
        }
    }
    

ध्यान दें कि ViewModelStoreProvider, Compose के बाहर भी उपलब्ध है. इसका इस्तेमाल Activities, Fragments, और/या Views के साथ किया जा सकता है.

नई सुविधाएं

  • ViewModel Navigation3 में सभी केएमपी टारगेट के लिए सहायता जोड़ी गई. (I60fa5)
  • कस्टम ओनर कॉम्पोनेंट बनाते समय, बॉयलरप्लेट को कम करने के लिए LifecycleOwner, ViewModelStoreOwner, और SavedStateRegistryOwner के लिए फ़ैक्ट्री फ़ंक्शन जोड़े गए. (I9682c)
  • बिना किसी नाम या वेब पते वाले ऑब्जेक्ट को इंस्टैंटिएट किए बिना लाइफ़साइकल इवेंट को मॉनिटर करने की अनुमति देने के लिए, लैंबडा पर आधारित Lifecycle.addObserver एक्सटेंशन फ़ंक्शन जोड़ा गया. (I94f38)
  • ViewModelStoreOwner में defaultViewModelProviderFactory और defaultViewModelCreationExtras एक्सटेंशन जोड़ें. ये HasDefaultViewModelProviderFactory के ख़िलाफ़ मैन्युअल टाइप की जांच किए बिना, डिफ़ॉल्ट को सुरक्षित तरीके से ऐक्सेस करने की सुविधा देते हैं. (Ifa83d)

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

  • Compose में आसानी से स्कोप किए गए ViewModelStoreOwner बनाने के लिए, rememberViewModelStoreOwner जोड़ें. यह फ़ंक्शन, Composable के लाइफ़साइकल से जुड़ा एक ऐसा मालिक दिखाता है जो Composable को यूज़र इंटरफ़ेस (यूआई) से हटाए जाने पर, उसके ViewModels को अपने-आप मिटा देता है. (I2a15b, b/165642391)
  • Compose में स्कोप किए गए ViewModelStore इंस्टेंस बनाने की अनुमति देने के लिए, rememberViewModelStoreProvider जोड़ें. यह फ़ंक्शन, चाइल्ड स्टोर को पैरंट स्टोर से लिंक करता है. इससे यह पक्का होता है कि कॉन्फ़िगरेशन में बदलाव होने पर भी ViewModels बने रहें. साथ ही, जब Composable को क्रम से हटा दिया जाता है, तो वे अपने-आप हट जाते हैं. (I0f57a, b/165642391)
  • स्कोप किए गए ViewModelStore इंस्टेंस को मैनेज करने के लिए, ViewModelStoreProvider जोड़ें. इस क्लास की मदद से, ऐसे चाइल्ड स्कोप बनाए जा सकते हैं जो कॉन्फ़िगरेशन में बदलाव होने पर भी बने रहते हैं. हालांकि, इन्हें अलग से हटाया जा सकता है. यह ViewModelStoreOwner रैपर भी उपलब्ध कराता है. ये रैपर, पैरंट से डिफ़ॉल्ट फ़ैक्ट्रियां और क्रिएशन एक्स्ट्रा इनहेरिट करते हैं. (I87f4f, b/434651920)

वर्शन 2.11.0-alpha01

25 फ़रवरी, 2026

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

नई सुविधाएं

  • ViewModel-Compose में सभी Kotlin Multiplatform (केएमपी) टारगेट के लिए सहायता उपलब्ध है. मालिक की समस्या को LocalView से अलग करें, ताकि प्लैटफ़ॉर्म होस्ट डिफ़ॉल्ट ViewModelStoreOwner उपलब्ध करा सकें. साथ ही, Android पर LocalView को सुरक्षित फ़ॉलबैक के तौर पर बनाए रख सकें. (I09fab, b/434940570, Ic8526, b/478146897)

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

  • ViewModelStore में toString को लागू करें. इससे, सेव किए गए सभी कुंजियों की सूची दिखेगी. इससे डीबग करने में आसानी होगी. (I0a6f4)
  • HasDefaultViewModelProviderFactory.defaultViewModelProviderFactory के लिए डिफ़ॉल्ट तौर पर लागू होने वाली सुविधा जोड़ी गई है. इसका मतलब है कि इंटरफ़ेस लागू करते समय, अब आपको इस प्रॉपर्टी को साफ़ तौर पर बदलने की ज़रूरत नहीं है. (Ia7095)
  • ViewModel.onCleared को @EmptySuper के साथ एनोटेट करें, ताकि साफ़ तौर पर यह बताया जा सके कि ओवरराइड करने वाले तरीकों को super.onCleared() को कॉल करने की ज़रूरत नहीं है. (I8c226)

वर्शन 2.10

वर्शन 2.10.0

19 नवंबर, 2025

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

2.9.0 के बाद हुए मुख्य बदलाव:

  • यूज़र इंटरफ़ेस (यूआई) में सीधे तौर पर स्कोप किए गए लाइफ़साइकल बनाने के लिए, rememberLifecycleOwner कंपोज़ेबल जोड़ें. यह उन कॉम्पोनेंट के लिए फ़ायदेमंद है जिन्हें अपने लाइफ़साइकल को अलग से मैनेज करना होता है. जैसे, HorizontalPager जो सिर्फ़ मौजूदा पेज को RESUMED बनाना चाहता है या Navigation3 जैसी लाइब्रेरी:

    @Composable
    fun MyComposable() {
        // This LifecycleOwner is automatically moved to DESTROYED when
        // it leaves composition and its maxLifecycle is the maximum of either
        // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner
        val lifecycleOwner = rememberLifecycleOwner(
            maxLifecycle = RESUMED,
            parentLifecycleOwner = LocalLifecycleOwner.current,
        )
        CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) {
            val childLifecycleOwner = LocalLifecycleOwner.current
        }
    }
    
  • lifecycle-viewmodel-navigation3 आर्टफ़ैक्ट, Navigation3 के लिए पहले से बना हुआ इंटिग्रेशन उपलब्ध कराता है. इससे ViewModel इंस्टेंस को अलग-अलग स्क्रीन (‘entries’) के लिए स्कोप किया जा सकता है. इसके लिए, rememberViewModelStoreNavEntryDecorator() एपीआई का इस्तेमाल करें:

    @Composable
    fun MyComposable() {
        NavDisplay(
            backStack = backStack,
            entryDecorators =
                listOf(
                    rememberSaveableStateHolderNavEntryDecorator(),
                    // Add this line to automatically scope ViewModels to each entry
                    rememberViewModelStoreNavEntryDecorator(),
                ),
            entryProvider = entryProvider {
                // Add your entries here
            }
        }
    }
    
  • CreationExtras के लिए बिल्डर फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. इससे Kotlin API को इस्तेमाल करना ज़्यादा आसान हो गया है.

    override val defaultViewModelCreationExtras: CreationExtras
        // Use the CreationExtras builder to add in a custom value to the default
        // CreationExtras in your Activity or Fragment
        get() = super.defaultViewModelCreationExtras + CreationExtras {
            this[CustomKey] = "customValue"
       }
    
  • SavedStateHandle.saved में बिना किसी वैल्यू वाले टाइप के लिए नेटिव सपोर्ट को जोड़ा गया है. इससे, इस तरह की वैल्यू स्वीकार करने वाली प्रॉपर्टी को सेव करना और वापस लाना आसान हो जाता है.

  • SavedStateHandle कंस्ट्रक्टर को @VisibleForTesting के तौर पर मार्क करें.

  • minSdk को एपीआई 21 से बदलकर एपीआई 23 कर दिया गया है.

वर्शन 2.10.0-rc01

05 नवंबर, 2025

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

वर्शन 2.10.0-beta01

22 अक्टूबर, 2025

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

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

  • ViewModelStoreNavEntryDecoratorDefault का नाम बदलकर ViewModelStoreNavEntryDecoratorDefaults कर दिया गया है. (I6d27b, b/444447434)

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

  • rememberLifecycleOwner अगर मालिक को Lifeycle.State.CREATED पर जाने से पहले Lifecycle.Event.ON_DESTROY इवेंट मिलता है, तो अब क्रैश नहीं होता. (I6f98e, b/444594991)

वर्शन 2.10.0-alpha05

08 अक्टूबर, 2025

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

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

  • removeViewModelStoreOnPopCallback() अब ViewModelStoreNavEntryDecoratorDefault ऑब्जेक्ट का हिस्सा है. अन्य प्लैटफ़ॉर्म और लागू करने वाले लोग, डिफ़ॉल्ट को यहां कॉल कर सकते हैं. (Ia1f23, b/444447434)
  • ViewModelStoreNavEntryDecorator को फ़ंक्शन से क्लास में बदला गया है, ताकि NavEntryDecorator के लिए फ़ैक्ट्री के तौर पर इसके फ़ंक्शन को बेहतर तरीके से दिखाया जा सके. साथ ही, डेकोरेटर के shouldRemoveViewModelStore पैरामीटर का नाम बदलकर removeViewModelStoreOnPop कर दिया गया है, ताकि यह साफ़ तौर पर बताया जा सके कि यह कॉलबैक सिर्फ़ तब शुरू होता है, जब backStack से कोई एंट्री हटाई जाती है. (Iefdc5, b/444447434)

वर्शन 2.10.0-alpha04

24 सितंबर, 2025

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

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

  • LifecycleOwner कंपोज़ेबल को rememberLifecycleOwner में बदल दो. अब यह फ़ंक्शन सीधे तौर पर LifecycleOwner दिखाता है. किसी सब-कंपोज़िशन के लिए इस मालिक की जानकारी देने के लिए, CompositionLocalProvider का इस्तेमाल करें. (Ic57f0, b/444446629)
  • लाइफ़साइकल-व्यूमॉडल-नेविगेशन3 में केएमपी स्टब जोड़ें, ताकि JetBrains ऐसे फ़ोर्क उपलब्ध करा सके जो इन टारगेट को पूरा करते हों. इससे सीएमपी को सपोर्ट करने में मदद मिलेगी. (I44a4c)

वर्शन 2.10.0-alpha03

27 अगस्त, 2025

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

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

  • Compose को 1.9.0 पर अपडेट करें. (I2b9de)

वर्शन 2.10.0-alpha02

13 अगस्त, 2025

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

नई सुविधाएं

  • LifecycleOwner कंपोज़ेबल अब स्टैंडअलोन रूट लाइफ़साइकल बना सकता है. parent = null को (साफ़ तौर पर) सेट करने पर, नया लाइफ़साइकल किसी भी होस्ट (जैसे कि Activity, Fragment या NavBackStackEntry) से अलग काम करता है. यह कंपोज़ेबल के कंपोज़िशन में शामिल होते ही शुरू हो जाता है और कंपोज़िशन से बाहर निकलते ही अपने-आप बंद हो जाता है. (I8dfbe, b/433659048)

    @Composable
    fun IndependentComponent() {
        // Create a standalone lifecycle, not tied to the parent Activity/Fragment.
        LifecycleOwner(parent = null) {
            val rootLifecycle = LocalLifecycleOwner.current.lifecycle
        }
    }
    

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

  • LifecycleOwner कंपोज़ेबल में, parentLifecycleOwner पैरामीटर का नाम बदलकर parent कर दिया गया है. (I080bc)

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

  • LifecycleOwner कंपोज़ेबल अब डिस्पोज़ल के बाद, अपने लाइफ़साइकल को सही तरीके से DESTROYED पर ले जाता है. इससे लाइफ़साइकल का रेफ़रंस रखने वाले बाहरी कोड के लिए, संभावित लीक को रोका जा सकता है. (I9e5b7, b/433659048)
  • डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)

बाहरी योगदान

  • LifecycleOwner से ग़ैर-ज़रूरी इंटरनल बैकिंग फ़ील्ड हटाएं. योगदान देने के लिए, Jake Wharton का धन्यवाद. (Ideddb)

वर्शन 2.10.0-alpha01

30 जुलाई, 2025

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

नई सुविधाएं

  • यूज़र इंटरफ़ेस (यूआई) में सीधे तौर पर स्कोप किए गए लाइफ़साइकल बनाने के लिए, LifecycleOwner कंपोज़ेबल जोड़ें. यह उन कॉम्पोनेंट के लिए काम का है जिन्हें अपनी लाइफ़साइकल को अलग से मैनेज करना होता है. Navigation3 इस नए कंपोज़ेबल को कैसे इंटिग्रेट करता है, इसका उदाहरण देखने के लिए aosp/3708610 देखें. (76cbf7)

    @Composable
    fun MyComposable() {
        LifecycleOwner(
            maxLifecycle = RESUMED,
            parentLifecycleOwner = LocalLifecycleOwner.current,
        ) {
            val childLifecycleOwner = LocalLifecycleOwner.current
        }
    }
    

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

  • CreationExtras के लिए बिल्डर फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. इससे Kotlin API को इस्तेमाल करना ज़्यादा आसान हो गया है. (Iab2bd)
  • SavedStateHandle.saved में बिना किसी वैल्यू वाले टाइप के लिए नेटिव सपोर्ट को जोड़ा गया है. इससे, इस तरह की वैल्यू स्वीकार करने वाली प्रॉपर्टी को सेव करना और वापस लाना आसान हो जाता है. (I54d69, b/421325690)
  • SavedStateHandle कंस्ट्रक्टर को @VisibleForTesting के तौर पर मार्क करें. (Iff0e0, b/408002794)

वर्शन 2.9

वर्शन 2.9.4

17 सितंबर, 2025

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

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

  • Compose कंपाइलर प्लगिन लागू न होने की गड़बड़ी को ठीक किया गया है. इसकी वजह से, लाइफ़साइकल केएमपी आर्टफ़ैक्ट काम नहीं कर रहे थे. (Ie95bc, b/443096483, b/443965665)

वर्शन 2.9.3

27 अगस्त, 2025

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

नई सुविधाएं

  • लाइफ़साइकल *-compose आर्टफ़ैक्ट में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए. Lifecycle अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). (I0a0e4)

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

  • androidx.annotation को 1.9.1 पर अपडेट करें (Ic9e4f, b/397701294)

वर्शन 2.9.2

16 जुलाई, 2025

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

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

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

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

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

वर्शन 2.9.1

4 जून, 2025

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

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

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

वर्शन 2.9.0

7 मई, 2025

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

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

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

KotlinX Serialization Support

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

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

Kotlin Multiplatform

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

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

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

वर्शन 2.9.0-rc01

23 अप्रैल, 2025

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

Lint API Compatibility Warning

  • JetBrains ने KaCallableMemberCall को क्लास से इंटरफ़ेस में बदल दिया है. इससे बाइनरी कंपैटबिलिटी टूट जाती है. अगर आपके प्रोजेक्ट का AGP वर्शन, लिंट चेक को कंपाइल करने के लिए इस्तेमाल किए गए वर्शन से अलग है, तो इससे क्रैश हो सकता है. यह अपडेट aosp/3577172 में किया गया था, लेकिन यह रिलीज़ नोट में मौजूद नहीं था. हम यहां इसके बारे में जानकारी दे रहे हैं. सुझाया गया तरीका: AGP के नए और स्टेबल वर्शन पर अपडेट करें. अगर आपको पूरी तरह से अपडेट करने में समस्या आ रही है, तो android.experimental.lint.version का इस्तेमाल करके, अपने एजीपी वर्शन के साथ लिंट चेक अलाइन करें. ज़्यादा जानकारी के लिए, Compose Runtime के व्यवहार में हुए बदलाव देखें.

वर्शन 2.9.0-beta01

9 अप्रैल, 2025

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

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

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

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

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

वर्शन 2.9.0-alpha13

26 मार्च, 2025

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

वर्शन 2.9.0-alpha12

12 मार्च, 2025

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

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

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

वर्शन 2.9.0-alpha11

26 फ़रवरी, 2025

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

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

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

वर्शन 2.9.0-alpha10

12 फ़रवरी, 2025

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

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

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

बाहरी योगदान

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

वर्शन 2.9.0-alpha09

29 जनवरी, 2025

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

नई सुविधाएं

  • androidx.compose.runtime.MutableState को क्रम में लगाने के लिए, MutableStateSerializer जोड़े गए. (Idfc48, b/378895074)

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

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

वर्शन 2.9.0-alpha08

11 दिसंबर, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.9.0-alpha07

13 नवंबर, 2024

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

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

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

KotlinX Serialization Support

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

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

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

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

वर्शन 2.9.0-alpha06

30 अक्टूबर, 2024

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

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

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

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

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

वर्शन 2.9.0-alpha05

16 अक्टूबर, 2024

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

वर्शन 2.9.0-alpha04

2 अक्टूबर, 2024

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

Kotlin Multiplatform

  • lifecycle-viewmodel-savedstate मॉड्यूल को अब केएमपी के साथ काम करने के लिए कॉन्फ़िगर किया गया है. ऐसा इसलिए किया गया है, ताकि आने वाले समय में SavedStateHandle जैसे एपीआई को सामान्य source set में उपलब्ध कराया जा सके. (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 लिंट की गड़बड़ी की जांच करने की सुविधा को स्मार्ट कास्ट के लिए बेहतर बनाया गया है. इससे फ़ॉल्स पॉज़िटिव से बचा जा सकता है. (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` एक्सटेंशन डेलिगेट अब शून्य हो सकने वाली वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz का धन्यवाद. (0d78ea6)

वर्शन 2.9.0-alpha01

7 अगस्त, 2024

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

Kotlin Multiplatform

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

नई सुविधाएं

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

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

  • बिना नाम वाले CreationExtras.Key ऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए, CreationExtras.Key() फ़ैक्ट्री फ़ंक्शन जोड़ा गया. (I970ee)
  • CreationExtras में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं. इससे Kotlin में कॉन्टेंट में आसानी से बदलाव किया जा सकता है. इससे CreationExtras के साथ in, +=, और + का इस्तेमाल किया जा सकता है. (Ib4353)
  • CreationExtras अब equals, hashCode, और toString तरीकों को लागू करता है. (Ib4353)
  • NewInstanceFactory अब जेवीएम डेस्कटॉप और 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 लिंट की गड़बड़ी की जांच करने वाली सुविधा को बेहतर बनाया गया है. अब यह स्मार्ट कास्ट के साथ काम करती है और फ़ॉल्स पॉज़िटिव से बचती है. (85fed6, b/181042665)

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

वर्शन 2.8.5

4 सितंबर, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.4

24 जुलाई, 2024

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

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

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

वर्शन 2.8.3

July 1, 2024

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

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

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

वर्शन 2.8.2

12 जून, 2024

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

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

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

वर्शन 2.8.1

29 मई, 2024

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

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

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

वर्शन 2.8.0

14 मई, 2024

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

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

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

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

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

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

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

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

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

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

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

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

ViewModel Kotlin Multiplatform Compatibility

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

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

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

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

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

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

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

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

मौजूदा समस्याएं

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

वर्शन 2.8.0-rc01

1 मई, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-beta01

17 अप्रैल, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha04

3 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0-alpha03

20 मार्च, 2024

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

नई सुविधाएं

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

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

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

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha02

21 फ़रवरी, 2024

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

नई सुविधाएं

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

Kotlin कन्वर्ज़न

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.7

वर्शन 2.7.0

10 जनवरी, 2024

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

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

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

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

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

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

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

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

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

वर्शन 2.7.0-rc02

13 दिसंबर, 2023

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

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

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

वर्शन 2.7.0-rc01

15 नवंबर, 2023

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

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

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

वर्शन 2.7.0-beta01

1 नवंबर, 2023

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

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

वर्शन 2.7.0-alpha03

18 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.7.0-alpha02

6 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.7.0-alpha01

26 जुलाई, 2023

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

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

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

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

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

वर्शन 2.6

वर्शन 2.6.2

6 सितंबर, 2023

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

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

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

वर्शन 2.6.1

22 मार्च, 2023

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

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

वर्शन 2.6.0

8 मार्च, 2023

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

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

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

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

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

वर्शन 2.6.0-rc01

22 फ़रवरी, 2023

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

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

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

वर्शन 2.6.0-beta01

8 फ़रवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha05

25 जनवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha04

11 जनवरी, 2023

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

नई सुविधाएं

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

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

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

Kotlin कन्वर्ज़न

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

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

वर्शन 2.6.0-alpha02

7 सितंबर, 2022

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

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

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

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

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

वर्शन 2.6.0-alpha01

29 जून, 2022

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

नई सुविधाएं

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

वर्शन 2.5

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 2.5.0-rc01

11 मई, 2022

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

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

  • MediatorLiveData.addSource() को अब null सोर्स पास करने पर, यह NullPointerException थ्रो करता है. यह null सोर्स को ऑब्ज़र्वर तक नहीं पहुंचाता.(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 (I38cfe, b/224565154) के साथ समानता बनाए रखने के लिए, SavedStateHandle.saveable में एक्सपेरिमेंटल MutableState ओवरलोड जोड़ा गया

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

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

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

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

वर्शन 2.5.0-alpha05

23 मार्च, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha04

9 मार्च, 2022

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

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

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

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

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

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

ViewModel CreationExtras

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

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

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

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

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

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

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

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

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

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

वर्शन 2.4

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

27 अक्टूबर, 2021

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

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

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

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

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

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

    (या)

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

वर्शन 2.4.0-rc01

29 सितंबर, 2021

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

वर्शन 2.4.0-beta01

15 सितंबर, 2021

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha03

4 अगस्त, 2021

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha02

16 जून, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha01

24 मार्च, 2021

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

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

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

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

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

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

    (या)

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

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

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

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

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

Lifecycle Viewmodel Compose वर्शन 1.0.0

वर्शन 1.0.0-alpha07

16 जून, 2021

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

एपीआई में हुए ऐसे बदलाव जिनसे मौजूदा सिस्टम पर असर पड़ता है

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

वर्शन 1.0.0-alpha06

2 जून, 2021

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

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

वर्शन 1.0.0-alpha05

18 मई, 2021

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

नई सुविधाएं

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

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

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

वर्शन 1.0.0-alpha04

7 अप्रैल, 2021

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

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

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

वर्शन 1.0.0-alpha03

10 मार्च, 2021

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

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

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

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

24 फ़रवरी, 2021

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

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

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

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

10 फ़रवरी, 2021

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

नई सुविधाएं

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

वर्शन 2.3.1

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

24 मार्च, 2021

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

10 फ़रवरी, 2021

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

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

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

वर्शन 2.3.0-rc01

16 दिसंबर, 2020

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

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

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

बाहरी योगदान

वर्शन 2.3.0-beta01

1 अक्टूबर, 2020

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha07

19 अगस्त, 2020

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

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

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

वर्शन 2.3.0-alpha06

22 जुलाई, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

24 जून, 2020

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

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

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

वर्शन 2.3.0-alpha04

10 जून, 2020

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

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

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

वर्शन 2.3.0-alpha03

20 मई, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.3.0-alpha02

29 अप्रैल, 2020

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

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

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

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

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

वर्शन 2.3.0-alpha01

4 मार्च, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.2.0

ViewModel-Savedstate वर्शन 2.2.0

5 फ़रवरी, 2020

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

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

वर्शन 2.2.0

22 जनवरी, 2020

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

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

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

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

बाहरी योगदान

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

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

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

बाहरी योगदान

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

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

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

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

वर्शन 2.2.0-alpha05

18 सितंबर, 2019

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

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

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

वर्शन 2.2.0-alpha04

5 सितंबर, 2019

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

नई सुविधाएं

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

बाहरी योगदान

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

वर्शन 2.2.0-alpha03

7 अगस्त, 2019

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

नई सुविधाएं

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

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

ViewModel-Savedstate का वर्शन 1.0.0-rc03

4 दिसंबर, 2019

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

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

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

Viewmodel-Savedstate वर्शन 1.0.0-rc02

7 नवंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

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

ViewModel-Savedstate वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha05

18 सितंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha03

7 अगस्त, 2019

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

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

  • lifecycle-viewmodel-savedstate अब fragment पर निर्भर नहीं है. साथ ही, इससे जुड़े SavedStateViewModelFactory(Fragment) और SavedStateViewModelFactory(FragmentActivity) कंस्ट्रक्टर हटा दिए गए हैं. इसके बजाय, अब Activity 1.1.0-alpha02, Fragment 1.2.0-alpha02, और Navigation 2.2.0-alpha01 के लिए, SavedStateViewModelFactory डिफ़ॉल्ट फ़ैक्ट्री है. (b/135716331)

ViewModel-SavedState वर्शन 1.0.0-alpha02

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

ViewModel-Savedstate वर्शन 1.0.0-alpha01

13 मार्च, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0

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

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

वर्शन 2.1.0

5 सितंबर, 2019

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

वर्शन 2.1.0-rc01

2 जुलाई, 2019

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

वर्शन 2.1.0-beta01

7 मई, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0-alpha04

3 अप्रैल, 2019

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

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

  • बड़ा बदलाव: by viewModels() और by activityViewModels() के पीछे काम करने वाले एपीआई को बदल दिया गया है, ताकि यह सीधे तौर पर ViewModelStore के साथ काम कर सके. पहले यह सिर्फ़ ViewModelStoreOwner के साथ काम करता था. (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

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

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

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

वर्शन 2.0.0-beta01

2 जुलाई, 2018

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

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

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

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