लाइफ़साइकल

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

इस टेबल में, androidx.lifecycle ग्रुप के सभी आर्टफ़ैक्ट शामिल हैं.

सह-प्रॉडक्ट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
लाइफ़साइकल-* 2.8.4 - - -
लाइफ़साइकल-व्यू-मॉडल-कंपोज़ 2.8.4 - - -
इस लाइब्रेरी को पिछली बार अपडेट किए जाने की तारीख: 24 जुलाई, 2024

डिपेंडेंसी तय करना

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

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

Kotlin

ग्रूवी

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

Java

ग्रूवी

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

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

सुझाव

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

नई समस्या जोड़ें

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

वर्शन 2.8

वर्शन 2.8.4

24 जुलाई, 2024

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

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

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

वर्शन 2.8.3

1 जुलाई, 2024

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

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

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

वर्शन 2.8.2

12 जून, 2024

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

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

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

वर्शन 2.8.1

29 मई, 2024

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

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

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

वर्शन 2.8.0

14 मई, 2024

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

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

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

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

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

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) ने LiveData.toPublisher(lifecycleOwner) का समर्थन किया.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

आम समस्याएं

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

वर्शन 2.8.0-rc01

1 मई, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-beta01

17 अप्रैल, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha04

3 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

डिपेंडेंसी अपडेट

  • lifecycle-viewmodel-compose आर्टफ़ैक्ट अब Compose के वर्शन 1.6.0 पर निर्भर करता है.
  • लाइफ़साइकल अब प्रोफ़ाइल इंस्टॉलर 1.3.1 पर निर्भर करता है.

वर्शन 2.8.0-alpha03

20 मार्च, 2024

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

नई सुविधाएं

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

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

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

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.8.0-alpha02

21 फ़रवरी, 2024

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

नई सुविधाएं

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

Kotlin कन्वर्ज़न

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

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

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

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

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

बाहरी योगदान

  • लाइफ़साइकल को Kotlin मल्टीप्लैटफ़ॉर्म पर माइग्रेट करने में, Jetbrains की ओर से इवान माटकोव का धन्यवाद. (aosp/2926690, I0c5ac, If445d)

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.7

वर्शन 2.7.0

10 जनवरी, 2024

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

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

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

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

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

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

लाइफ़साइकल स्टेट ऑब्ज़रवबिलिटी

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

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

वर्शन 2.7.0-rc02

13 दिसंबर, 2023

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

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

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

वर्शन 2.7.0-rc01

15 नवंबर, 2023

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

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

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

वर्शन 2.7.0-beta01

1 नवंबर, 2023

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

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

वर्शन 2.7.0-alpha03

18 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.7.0-alpha02

6 सितंबर, 2023

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.7.0-alpha01

26 जुलाई, 2023

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

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

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

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

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

वर्शन 2.6

वर्शन 2.6.2

6 सितंबर, 2023

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

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

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

वर्शन 2.6.1

22 मार्च, 2023

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

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

वर्शन 2.6.0

8 मार्च, 2023

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

2.5.0 के बाद के अहम बदलाव

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

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

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

वर्शन 2.6.0-rc01

22 फ़रवरी, 2023

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

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

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

वर्शन 2.6.0-beta01

8 फ़रवरी, 2023

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

Kotlin कन्वर्ज़न

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

वर्शन 2.6.0-alpha05

25 जनवरी, 2023

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

Kotlin कन्वर्ज़न

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

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

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

Kotlin कन्वर्ज़न

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

वर्शन 2.6.0-alpha02

7 सितंबर, 2022

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

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

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

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

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

वर्शन 2.6.0-alpha01

29 जून, 2022

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

नई सुविधाएं

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

वर्शन 2.5

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

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

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

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

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

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

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

    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 में इंजेक्ट किया जा सकता है, लेकिन टेस्टिंग से कंट्रोल किया जा सकता है, Closeable को लागू करने वाला CoroutineScope बनाया जा सकता है:

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

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

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

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

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

वर्शन 2.5.0-rc02

15 जून, 2022

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

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

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

वर्शन 2.5.0-rc01

11 मई, 2022

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

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

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

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha06

6 अप्रैल, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha05

23 मार्च, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.5.0-alpha04

9 मार्च, 2022

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

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

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

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

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

नई सुविधाएं

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

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

  • अब आपके पास CreationExtras का इस्तेमाल करके, ViewModel बनाने का विकल्प है. इसके लिए, इनका इस्तेमाल करें: lifecycle-viewmodel-compose. (I08887, b/216688927)

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

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

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

ViewModel CreationExtras

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

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

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

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

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

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

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

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

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

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

वर्शन 2.4

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

27 अक्टूबर, 2021

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

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

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

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

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

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

    (या)

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

वर्शन 2.4.0-rc01

29 सितंबर, 2021

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

वर्शन 2.4.0-beta01

15 सितंबर, 2021

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha02

16 जून, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha01

24 मार्च, 2021

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

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

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

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

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

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

    (या)

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

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

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

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

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

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

वर्शन 1.0.0-alpha07

16 जून, 2021

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

तीसरे पक्ष के एपीआई में हुए बदलाव

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

वर्शन 1.0.0-alpha06

2 जून, 2021

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

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

वर्शन 1.0.0-alpha05

18 मई, 2021

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

नई सुविधाएं

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

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

  • ui-test-मेनिफ़ेस्ट से और ui-tooling-data, अब Android 12 (I6f9de, b/184718994) के साथ काम करता है

वर्शन 1.0.0-alpha04

7 अप्रैल, 2021

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

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

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

वर्शन 1.0.0-alpha03

10 मार्च, 2021

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

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

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

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

24 फ़रवरी, 2021

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

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

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

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

10 फ़रवरी, 2021

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

नई सुविधाएं

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

वर्शन 2.3.1

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

24 मार्च, 2021

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

10 फ़रवरी, 2021

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

2.2.0 से अब तक के बड़े बदलाव

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

वर्शन 2.3.0-rc01

16 दिसंबर, 2020

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

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

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

बाहरी योगदान

वर्शन 2.3.0-beta01

1 अक्टूबर, 2020

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

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

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

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

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

दस्तावेज़ों में हुए बदलाव

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

वर्शन 2.3.0-alpha07

19 अगस्त, 2020

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

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

  • NullSafeMutableLiveData लिंट जांच में क्रैश से जुड़ी समस्या ठीक की गई. (aosp/1395367)

वर्शन 2.3.0-alpha06

22 जुलाई, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

24 जून, 2020

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

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

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

वर्शन 2.3.0-alpha04

10 जून, 2020

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

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

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

वर्शन 2.3.0-alpha03

20 मई, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.3.0-alpha02

29 अप्रैल, 2020

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

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

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

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

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

वर्शन 2.3.0-alpha01

4 मार्च, 2020

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

नई सुविधाएं

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

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

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

वर्शन 2.2.0

ViewModel-सेव किए गए स्टेट वर्शन 2.2.0

5 फ़रवरी, 2020

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

Lifecycle ViewModel savedState का वर्शन, अब उसी वर्शन को शेयर करता है जो दूसरे लाइफ़साइकल आर्टफ़ैक्ट में है. 2.2.0 और 1.0.0 का व्यवहार एक जैसा है.

वर्शन 2.2.0

22 जनवरी, 2020

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

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

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

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

बाहरी योगदान

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

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

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

वर्शन 2.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

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

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

बाहरी योगदान

  • समस्या हल करने में योगदान देने के लिए निकलस एंसमैन को धन्यवाद! (aosp/1145596)

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

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

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

वर्शन 2.2.0-alpha05

18 सितंबर, 2019

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

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

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

वर्शन 2.2.0-alpha04

5 सितंबर, 2019

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

नई सुविधाएं

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

बाहरी योगदान

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

वर्शन 2.2.0-alpha03

7 अगस्त, 2019

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

नई सुविधाएं

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

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

वर्शन 2.2.0-alpha02

2 जुलाई, 2019

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

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

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

वर्शन 2.2.0-alpha01

7 मई, 2019

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

नई सुविधाएं

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

ViewModel-SavedState वर्शन 1.0.0

वर्शन 1.0.0

22 जनवरी, 2020

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

1.0.0 में खास सुविधाएं

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

ViewModel-Savedstate वर्शन 1.0.0-rc03

4 दिसंबर, 2019

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

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

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

Viewmodel-Savedstate वर्शन 1.0.0-rc02

7 नवंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-rc01

23 अक्टूबर, 2019

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

ViewModel-Savedstate वर्शन 1.0.0-beta01

9 अक्टूबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha05

18 सितंबर, 2019

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

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha03

7 अगस्त, 2019

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

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

ViewModel-SavedState वर्शन 1.0.0-alpha02

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

ViewModel-Savedstate वर्शन 1.0.0-alpha01

13 मार्च, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0

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

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

वर्शन 2.1.0

5 सितंबर, 2019

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

वर्शन 2.1.0-rc01

2 जुलाई, 2019

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

वर्शन 2.1.0-beta01

7 मई, 2019

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

नई सुविधाएं

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

वर्शन 2.1.0-alpha04

3 अप्रैल, 2019

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

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

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

वर्शन 2.1.0-alpha03

13 मार्च, 2019

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

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

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

वर्शन 2.1.0-alpha02

30 जनवरी, 2019

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

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

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

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

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

वर्शन 2.1.0-alpha01

17 दिसंबर, 2018

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

नई सुविधाएं

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

वर्शन 2.0.0

वर्शन 2.0.0

21 सितंबर, 2018

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

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

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

वर्शन 2.0.0-beta01

2 जुलाई, 2018

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

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

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

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

dependencies {
    def lifecycle_version = "1.1.1"

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

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

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

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

वर्शन 1.1.1

21 मार्च, 2018

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

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

वर्शन 1.1.0

22 जनवरी, 2018

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

अब नई, बहुत कम डिपेंडेंसी उपलब्ध हैं:

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

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

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