लाइफ़साइकल
इस टेबल में, androidx.lifecycle
ग्रुप के सभी आर्टफ़ैक्ट की सूची दी गई है.
सह-प्रॉडक्ट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
lifecycle-* | 2.9.3 | - | - | 2.10.0-alpha04 |
lifecycle-viewmodel-navigation3 | - | - | - | 2.10.0-alpha04 |
डिपेंडेंसी का एलान करना
Lifecycle पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
ग्रूवी
dependencies { def lifecycle_version = "2.9.3" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-alpha04" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.3" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-alpha04") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
ग्रूवी
dependencies { def lifecycle_version = "2.9.3" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.3" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
Lifecycle ViewModel Navigation3 Version 1.0.0
वर्शन 1.0.0-alpha04
30 जुलाई, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha04
और androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha04
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle Viewmodel Navigation3 अब Navigation3 Alpha06 पर निर्भर करता है.
वर्शन 1.0.0-alpha03
2 जुलाई, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
और androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel Navigation 3 अब Navigation3 Alpha05 पर निर्भर करता है.
वर्शन 1.0.0-alpha02
18 जून, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
और androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
, Navigation31.0.0-alpha04
में हुए बदलावों पर निर्भर करता है. (Icd0fd, b/420991203)
वर्शन 1.0.0-alpha01
23 मई, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Lifecycle ViewModel Navigation3, Navigation3 के साथ बनाई गई एक नई लाइब्रेरी है. इसे
ViewModels
के साथ इंटिग्रेशन की सुविधा देने के लिए बनाया गया है.androidx.lifecycle:lifecycle-viewmodel-navigation3
आर्टफ़ैक्ट,ViewModelStoreNavEntryDecorator
उपलब्ध कराता है. यह हरNavEntry
के कॉन्टेंट को यूनीकViewModelStoreOwner
उपलब्ध कराता है. यहrememberViewModelStoreNavEntryDecorator()
भी उपलब्ध कराता है, ताकि यह पक्का किया जा सके कि कॉन्फ़िगरेशन में बदलाव होने पर डेकोरेटर को सही तरीके से मैनेज किया जा रहा है.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
वर्शन 2.10
वर्शन 2.10.0-alpha03
27 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03
रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Compose को 1.9.0 पर अपडेट करें. (I2b9de)
वर्शन 2.10.0-alpha02
13 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02
रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
LifecycleOwner
कंपोज़ेबल अब स्टैंडअलोन रूट लाइफ़साइकल बना सकता है.parent = null
को साफ़ तौर पर सेट करने पर, नया लाइफ़साइकल किसी भी होस्ट (जैसे किActivity
,Fragment
याNavBackStackEntry
) से अलग काम करता है. यह कंपोज़ेबल के कंपोज़िशन में शामिल होते ही शुरू हो जाता है और कंपोज़िशन से बाहर निकलते ही अपने-आप बंद हो जाता है. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
एपीआई में हुए बदलाव
LifecycleOwner
कॉम्पोज़ेबल में,parentLifecycleOwner
पैरामीटर का नाम बदलकरparent
कर दिया गया है. (I080bc)
गड़बड़ियां ठीक की गईं
LifecycleOwner
अब डिस्पोज़ल के बाद, कंपोज़ेबल का लाइफ़साइकल सही तरीके सेDESTROYED
पर चला जाता है. इससे, लाइफ़साइकल का रेफ़रंस रखने वाले बाहरी कोड के लिए संभावित लीक को रोका जा सकता है. (I9e5b7, b/433659048)- डिफ़ॉल्ट minSdk को API 21 से API 23 पर ले जाना (Ibdfca, b/380448311, b/435705964, b/435705223)
बाहरी योगदान
LifecycleOwner
से गैर-ज़रूरी इंटरनल बैकिंग फ़ील्ड हटाएं. योगदान देने के लिए, Jake Wharton का धन्यवाद. (Ideddb)
वर्शन 2.10.0-alpha01
30 जुलाई, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01
रिलीज़ हो गया है. वर्शन 2.10.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
यूज़र इंटरफ़ेस में सीधे तौर पर स्कोप किए गए लाइफ़साइकल बनाने की सुविधा चालू करने के लिए,
LifecycleOwner
कंपोज़ेबल जोड़ें. यह उन कॉम्पोनेंट के लिए काम का है जिन्हें अपनी लाइफ़साइकल को अलग से मैनेज करना होता है. Navigation3 इस नए कंपोज़ेबल को कैसे इंटिग्रेट करता है, इसका उदाहरण देखने के लिए aosp/3708610 देखें. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
एपीआई में हुए बदलाव
CreationExtras
के लिए बिल्डर फ़ैक्ट्री फ़ंक्शन जोड़ा गया है. इससे Kotlin API का इस्तेमाल करना ज़्यादा आसान हो जाता है. (Iab2bd)SavedStateHandle.saved
में बिना किसी वैल्यू वाले टाइप के लिए नेटिव सपोर्ट को जोड़ा गया है. इससे, इस तरह की वैल्यू स्वीकार करने वाली प्रॉपर्टी को सेव करना और वापस लाना आसान हो जाता है. (I54d69, b/421325690)SavedStateHandle
कंस्ट्रक्टर को@VisibleForTesting
के तौर पर मार्क करें. (Iff0e0, b/408002794)
वर्शन 2.9
वर्शन 2.9.3
27 अगस्त, 2025
androidx.lifecycle:lifecycle-*:2.9.3
रिलीज़ हो गया है. वर्शन 2.9.3 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Lifecycle
*-compose
आर्टफ़ैक्ट में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए. Lifecycle अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). (I0a0e4)
गड़बड़ियां ठीक की गईं
androidx.annotation
को 1.9.1 पर अपडेट करें (Ic9e4f, b/397701294)
वर्शन 2.9.2
16 जुलाई, 2025
androidx.lifecycle:lifecycle-*:2.9.2
रिलीज़ हो गया है. वर्शन 2.9.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल आर्टफ़ैक्ट में नए Kotlin Multiplatform (केएमपी) टारगेट जोड़े गए. Lifecycle अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). ध्यान दें कि
*-compose
आर्टफ़ैक्ट में कोई नया केएमपी टारगेट नहीं जोड़ा गया है, क्योंकि यह Compose 1.9 की स्टेबल रिलीज़ पर निर्भर करता है. (I01cb8).
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल अब एनोटेशन
1.9.1
पर निर्भर करता है, ताकि नए केएमपी टारगेट (Ic9e4f, b/397701294) के लिए सहायता चालू की जा सके.
वर्शन 2.9.1
4 जून, 2025
androidx.lifecycle:lifecycle-*:2.9.1
रिलीज़ हो गया है. वर्शन 2.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
SavedStateHandle.remove(key)
केSavedStateHandle.getMutableStateFlow(key)
स्टेटस को हटाने से जुड़ी समस्या ठीक की गई. (d5f939, b/418746333)
वर्शन 2.9.0
7 मई, 2025
androidx.lifecycle:lifecycle-*:2.9.0
रिलीज़ हो गया है. वर्शन 2.9.0 में ये बदलाव शामिल हैं.
2.8.0 के बाद हुए अहम बदलाव
androidx.lifecycle:lifecycle-viewmodel-testing
का नया केएमपी आर्टफ़ैक्ट उपलब्ध है. इसमेंViewModels
को अलग से टेस्ट करने के लिए,ViewModelScenario
क्लास उपलब्ध है. साथ ही, इसमेंonCleared
औरSavedStateHandle
के साथ-साथ,recreate()
के ज़रिए प्रोसेस डेथ और रीक्रिएशन को टेस्ट करने की सुविधा भी है.MutableStateFlow
को वापस पाने के लिए,SavedStateHandle
मेंgetMutableStateFlow
जोड़ें. यह नया फ़ंक्शन, सिर्फ़ कुंजी के साथ काम करता है. इसका इस्तेमालgetLiveData
के साथ नहीं किया जा सकता. अगर एक ही स्थिति को ऐक्सेस करने के लिए, दोनों का इस्तेमाल किया जाता है, तो इसे अपवाद माना जाएगा.CreationExtras
में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससेCreationExtras
के साथin
,+=
, और+
का इस्तेमाल किया जा सकता है.
KotlinX Serialization Support
SavedState
1.3.0
में KotlinX Serialization के सपोर्ट को जोड़ा गया है. साथ ही, हमनेsaved
को भी शामिल किया है. यह एक लेज़ी प्रॉपर्टी डेलिगेट है. इससे@Serializable
क्लास कोSavedStateHandle
में आसानी से सेव किया जा सकता है. साथ ही, प्रोसेस बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें किsaved
डेलिगेट लेज़ी है (ऐसी प्रॉपर्टी जो मेमोरी में सेव नहीं होती, बल्कि तब बनती है जब तक इसे ऐक्सेस नहीं किया जाता). इसलिए, जब तक इसे ऐक्सेस नहीं किया जाता, तब तक यहinit
लैम्डा को कॉल नहीं करेगा याSavedStateHandle
में कुछ भी सेव नहीं करेगा.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
lifecycle-testing
मॉड्यूल अब केएमपी के साथ काम करता है. इसमेंTestLifecycleOwner
जैसे एपीआई शामिल हैं.lifecycle-viewmodel-savedstate
मॉड्यूल अब केएमपी के साथ काम करता है. इसमेंSavedStateHandle
जैसे एपीआई शामिल हैं.androidx.compose.ui.platform.LocalLifecycleOwner
अब सामान्य सोर्स सेट में उपलब्ध है.NewInstanceFactory
अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है.
व्यवहार में बदलाव
Lifecycle.DESTROYED
स्थिति टर्मिनल है. अबLifecycle
को इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश करने पर,IllegalStateException
दिखेगा.SavedStateHandle
में अब ऐसेSavedStateProvider.saveState()
शामिल नहीं हैं जिनमेंBundle
की वैल्यू खाली है.
वर्शन 2.9.0-rc01
23 अप्रैल, 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01
रिलीज़ हो गया है. वर्शन 2.9.0-rc01 में ये बदलाव शामिल हैं.
Lint API Compatibility Warning
- JetBrains ने
KaCallableMemberCall
को क्लास से इंटरफ़ेस में बदल दिया है. इससे बाइनरी कंपैटिबिलिटी टूट जाती है. अगर आपके प्रोजेक्ट का AGP वर्शन, lint चेक को कंपाइल करने के लिए इस्तेमाल किए गए वर्शन से अलग है, तो इससे क्रैश हो सकता है. यह अपडेट aosp/3577172 में किया गया था, लेकिन रिलीज़ नोट में मौजूद नहीं था. हम यहां इसके बारे में जानकारी दे रहे हैं. सुझाया गया तरीका: AGP के नए स्टेबल वर्शन पर अपडेट करें. अगर आपको पूरा अपडेट नहीं करना है, तोandroid.experimental.lint.version
का इस्तेमाल करके, अपने एजीपी वर्शन के साथ लिंट जांचों को अलाइन करें. ज़्यादा जानकारी के लिए, Compose Runtime के व्यवहार में हुए बदलाव देखें.
वर्शन 2.9.0-beta01
9 अप्रैल, 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01
रिलीज़ हो गया है. वर्शन 2.9.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Lifecycle ViewModel Compose
अब Compose Runtime 1.7.1 और इसके बाद के वर्शन की तरह ही Kotlin Multiplatform सेटअप का इस्तेमाल करता है.-desktop
आर्टफ़ैक्ट अब हटा दिए गए हैं और-jvmStubs
और-linuxx64Stubs
आर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके. (I5cb14, b/406592090)
डिपेंडेंसी से जुड़े अपडेट
- यह लाइब्रेरी अब Kotlin 2.0 के भाषा लेवल को टारगेट करती है. इसके लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है. (Idb6b5)
Lifecycle ViewModel Compose
अब Compose 1.7.8 पर निर्भर करता है. (I5cb14, b/406592090)
वर्शन 2.9.0-alpha13
26 मार्च, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13
को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 2.9.0-alpha13 में ये बदलाव शामिल हैं.
वर्शन 2.9.0-alpha12
12 मार्च, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12
रिलीज़ हो गया है. वर्शन 2.9.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@MainThread
एनोटेशन कोViewModelProvider.get
में जोड़ा गया. यह एनोटेशन, केएमपी के सभी प्लैटफ़ॉर्म पर काम करता है. (I7e8dd, b/397736115)SavedState*Delegates
का नाम बदलकरSavedState*Delegate
करें. (I8589b, b/399629301)
वर्शन 2.9.0-alpha11
26 फ़रवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11
रिलीज़ हो गया है. वर्शन 2.9.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
saved()
डेलिगेट (I39b3a) मेंSavedStateConfig
पैरामीटर जोड़ा गया
वर्शन 2.9.0-alpha10
12 फ़रवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10
रिलीज़ हो गया है. वर्शन 2.9.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MutableStateSerializer
कोlifecycle-viewmodel-compose
सेsavedstate-compose
में ले जाएं. (I4f690, b/378895074)
बाहरी योगदान
- यह कंपोज़िशन में
Lifecycle::currentState
को कॉल करने के लिए, नई लिंट समस्या जोड़ता है. इसके बजाय,currentStateAsalue().value
का इस्तेमाल करने का सुझाव देता है, ताकि यह पक्का किया जा सके कि लाइफ़साइकल की स्थिति में बदलाव होने पर, कंपोज़िशन सही तरीके से फिर से हो. धन्यवाद स्टीवन शोएन! (Iad484)
वर्शन 2.9.0-alpha09
29 जनवरी, 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09
रिलीज़ हो गया है. वर्शन 2.9.0-alpha09 में ये बदलाव शामिल हैं.
नई सुविधाएं
androidx.compose.runtime.MutableState
को क्रम में लगाने के लिए,MutableStateSerializer
जोड़े गए. (Idfc48, b/378895074)
एपीआई में हुए बदलाव
- डिफ़ॉल्ट पैरामीटर (Icd1c1) के साथ, ओवरलोड किए गए
SavedStateHandle.saved()
डेलिगेट फ़ंक्शन बदले गए हैं AbstractSavedStateViewModelFactory
के इस्तेमाल पर पाबंदी लगा दी गई है, क्योंकि यह हरViewModel
के लिए एकSavedStateHandle
बनाता है. इससे बेवजह ओवरहेड बढ़ता है.ViewModel
को ज़्यादा असरदार बनाने के लिए,CreationExtras.createSavedStateHandle
के साथViewModelProvider.Factory
का इस्तेमाल करें. (Ia920b, b/388590327)
वर्शन 2.9.0-alpha08
11 दिसंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
रिलीज़ हो गया है. वर्शन 2.9.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
ViewModelScenario.recreate
जोड़कर, सिस्टम प्रोसेस डेथ को सिम्युलेट करें. इससे, टेस्ट किए जा रहेViewModel
और उससे जुड़े सभी कॉम्पोनेंट को फिर से बनाया जा सकेगा. (Id6a69, b/381063087)findViewTree
एपीआई के ज़रिए वापस लाए गएLifecycleOwner
औरViewModelStoreOwner
इंस्टेंस को अब व्यू के अलग-अलग पैरंट के ज़रिए हल किया जा सकता है. जैसे,ViewOverlay
. व्यू के अलग-अलग पैरंट के बारे में ज़्यादा जानने के लिए, कोर के रिलीज़ नोट याViewTree.setViewTreeDisjointParent
में मौजूद दस्तावेज़ देखें. (I800f4)
एपीआई में हुए बदलाव
- नाम रखने के तरीके और पैकेज के संगठन को
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744) के साथ ज़्यादा अनुकूल बनाएं
गड़बड़ियां ठीक की गईं
- यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल के लिए, कंपाइलर के इस तर्क का इस्तेमाल करना चाहिए:
-Xjspecify-annotations=strict
(यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से शुरू होता है). (Ie4340, b/326456246) - दस्तावेज़
ViewModel.onCleared
को मिटाने का क्रम. (I586c7, b/363984116)
वर्शन 2.9.0-alpha07
13 नवंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07
रिलीज़ हो गया है. वर्शन 2.9.0-alpha07 में ये बदलाव शामिल हैं.
Kotlin Multiplatform के साथ काम करने की सुविधा
- लाइफ़साइकल
ViewModel SavedState
अब केएमपी के साथ काम करता है. इससे आपको सामान्य कोड मेंSavedStateHandle
का इस्तेमाल करने की अनुमति मिलती है. (Ib6394, b/334076622)
KotlinX Serialization Support
SavedState
1.3.0-alpha05
में KotlinX Serialization के सपोर्ट को जोड़ा गया है. साथ ही, हमनेsaved
को भी शामिल किया है. यह एक लेज़ी प्रॉपर्टी डेलिगेट है. इससे@Serializable
क्लास कोSavedStateHandle
में आसानी से सेव किया जा सकता है. साथ ही, प्रोसेस बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें किsaved
डेलिगेट लेज़ी है (ऐसी प्रॉपर्टी जो मेमोरी में सेव नहीं होती, बल्कि तब बनती है जब तक इसे ऐक्सेस नहीं किया जाता). इसलिए, जब तक इसे ऐक्सेस नहीं किया जाता, तब तक यहinit
लैम्डा को कॉल नहीं करेगा याSavedStateHandle
में कुछ भी सेव नहीं करेगा. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
एपीआई में हुए बदलाव
MutableStateFlow
को वापस पाने के लिए,SavedStateHandle
मेंgetMutableStateFlow
जोड़ें. यह नया फ़ंक्शन, सिर्फ़ कुंजी के साथ काम करता है. इसका इस्तेमालgetLiveData
के साथ नहीं किया जा सकता. अगर एक ही स्थिति को ऐक्सेस करने के लिए, दोनों का इस्तेमाल किया जाता है, तो इसे अपवाद माना जाएगा. (I04a4f, b/375408415)
वर्शन 2.9.0-alpha06
30 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06
रिलीज़ हो गया है. वर्शन 2.9.0-alpha06 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
Lifecycle.DESTROYED
स्थिति टर्मिनल है. अबLifecycle
को इस स्थिति से किसी दूसरी स्थिति में ले जाने की कोशिश करने पर,IllegalStateException
दिखेगा. (I116c4, b/370577987)SavedStateHandle
में अब ऐसेSavedStateProvider.saveState()
शामिल नहीं हैं जिनमेंBundle
की वैल्यू खाली है. (I910b5, b/370577987)
गड़बड़ियां ठीक की गईं
Lifecycle.eventFlow
अब सही तरीके से पूरा होता है, जबLifecycle
DESTROYED
हो (I293b2, b/374043130)
वर्शन 2.9.0-alpha05
16 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 2.9.0-alpha05 में ये बदलाव शामिल हैं.
वर्शन 2.9.0-alpha04
2 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04
रिलीज़ हो गया है. वर्शन 2.9.0-alpha04 में ये बदलाव शामिल हैं.
Kotlin Multiplatform
lifecycle-viewmodel-savedstate
मॉड्यूल को अब केएमपी के साथ काम करने के लिए कॉन्फ़िगर किया गया है. ऐसा इसलिए किया गया है, ताकिSavedStateHandle
जैसे एपीआई को आने वाले समय में रिलीज़ होने वाले वर्शन में, सामान्य सोर्स सेट में उपलब्ध कराया जा सके. (I503ed, I48764, b/334076622)
वर्शन 2.9.0-alpha03
18 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
रिलीज़ हो गया है. वर्शन 2.9.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.6
से:NullSafeMutableLiveData
Lint की गड़बड़ी में स्मार्ट कास्ट के लिए बेहतर सहायता उपलब्ध है. इससे फ़ॉल्स पॉज़िटिव से बचा जा सकता है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल
2.8.6
से: लाइफ़साइकल रनटाइम कंपोज़ अब कंपोज़ रनटाइम1.7.1
पर निर्भर करता है - लाइफ़साइकल रनटाइम अब ProfileInstaller
1.4.0
पर निर्भर करता है
वर्शन 2.9.0-alpha02
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.8.5
से:androidx.lifecycle.ReportFragment
ProGuard के नियमों को अपडेट करें, ताकि कोड को अस्पष्ट करने की अनुमति दी जा सके . (ff898e1)
बाहरी योगदान
androidx.compose.ui.platform.LocalLifecycleOwner
को सामान्य सोर्स सेट (KMP) में ले जाएं. योगदान देने के लिए, JetBrains के इवान माटकोव को धन्यवाद. (8cd5d03)- लाइफ़साइकल
2.8.5
से: SavedStateHandle.saveable` एक्सटेंशन डेलिगेट अब शून्य हो सकने वाली वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz का धन्यवाद. (0d78ea6)
वर्शन 2.9.0-alpha01
7 अगस्त, 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये बदलाव शामिल हैं.
Kotlin Multiplatform
lifecycle-testing
अब केएमपी के साथ काम करता है. (Iea41e)linuxArm64
Kotlin Multiplatform टारगेट के लिए सहायता जोड़ी गई (I139d3, b/338268719)
नई सुविधाएं
androidx.lifecycle:lifecycle-viewmodel-testing
केएमपी का नया आर्टफ़ैक्ट उपलब्ध है. इसमेंViewModelScenario
क्लास है. इसकी मदद से, ViewModels को अलग से टेस्ट किया जा सकता है. यहonCleared
(सभी प्लैटफ़ॉर्म) औरSavedStateHandle
(सिर्फ़ Android) के साथ काम करता है. (337f68d, c9b3409, 9799a95c, b/264602919)ViewModelProvider
की मदद सेViewModel
बनाने की सुविधा अब थ्रेड सेफ़ है. साथ ही,@MainThread
एनोटेशन हटा दिए गए हैं. (Ifd978, b/237006831)
एपीआई में हुए बदलाव
- बिना किसी नाम या वेब पते वाले
CreationExtras.Key
ऑब्जेक्ट बनाने की प्रोसेस को आसान बनाने के लिए,CreationExtras.Key()
फ़ैक्ट्री फ़ंक्शन जोड़ा गया. (I970ee) CreationExtras
में अब मैप जैसे ऑपरेटर ओवरलोड शामिल हैं, ताकि Kotlin में कॉन्टेंट को आसानी से मैनेज किया जा सके. इससेCreationExtras
के साथin
,+=
, और+
का इस्तेमाल किया जा सकता है. (Ib4353)CreationExtras
अबequals
,hashCode
, औरtoString
तरीकों को लागू करता है. (Ib4353)NewInstanceFactory
अब JVM डेस्कटॉप और Android टारगेट पर उपलब्ध है. (d3d0892)- Kotlin लैंग्वेज के वर्शन 2.0 (I39df2) में, Application को सुरक्षित तरीके से दिखाने के लिए इनलाइन एक्सटेंशन प्रॉपर्टी
गड़बड़ियां ठीक की गईं
- नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि AGP 7.3 या इसके बाद के वर्शन (जैसे, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग के ज़रिए यह काम अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (जैसे, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. AGP का इस्तेमाल न करने वाले क्लाइंट को, D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (If6b4c, b/345472586)
वर्शन 2.8
वर्शन 2.8.7
30 अक्टूबर, 2024
androidx.lifecycle:lifecycle-*:2.8.7
रिलीज़ हो गया है. वर्शन 2.8.7 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
androidx.compose.ui.platform.LocalLifecycleOwner
अब कॉमन सोर्स सेट (केएमपी) में उपलब्ध है. (6a3f5b3)lifecycle-runtime-compose
:desktop
आर्टफ़ैक्ट हटा दिए गए हैं. साथ ही,-jvmStubs
और-linuxx64Stubs
आर्टफ़ैक्ट जोड़ दिए गए हैं. इनमें से किसी भी टारगेट का इस्तेमाल नहीं किया जाना चाहिए. ये सिर्फ़ प्लेसहोल्डर हैं, ताकि Jetbrains Compose को बेहतर बनाने में मदद मिल सके. (6a3f5b3)
वर्शन 2.8.6
18 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.8.6
रिलीज़ हो गया है. वर्शन 2.8.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
लिंट की गड़बड़ी की जांच करने वाली सुविधा को स्मार्ट कास्ट के लिए बेहतर बनाया गया है. इससे गलत पहचान किए जाने की समस्या से बचा जा सकता है. (85fed6, b/181042665)
डिपेंडेंसी से जुड़े अपडेट
- लाइफ़साइकल रनटाइम कंपोज़ अब कंपोज़ रनटाइम
1.7.1
पर निर्भर करता है
वर्शन 2.8.5
4 सितंबर, 2024
androidx.lifecycle:lifecycle-*:2.8.5
रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.lifecycle.ReportFragment
ProGuard के नियमों को अपडेट करें, ताकि कोड को उलझाया जा सके . (ff898e1)
बाहरी योगदान
SavedStateHandle.saveable
एक्सटेंशन डेलिगेट अब नल वैल्यू के साथ काम करता है. योगदान देने के लिए Roman Kalukiewicz का धन्यवाद. (0d78ea6)
वर्शन 2.8.4
24 जुलाई, 2024
androidx.lifecycle:lifecycle-*:2.8.4
रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LiveData.asFlow()
अब उन मामलों को सही तरीके से हैंडल करता है जहांLiveData
पर पहले से सेट की गई वैल्यू मिलने के बाद, लौटाया गया फ़्लो तुरंत पूरा हो जाता है. उदाहरण के लिए,take(1)
का इस्तेमाल करते समय. (I9c566)Lifecycle*Effect
अब आइडेमपोटेंट है.इसका मतलब है कि अगर लाइफ़साइकल बंद होने की वजह सेonStopOrDispose
को कॉल किया गया था, तो डिस्पोज़ल के बाद इसे दूसरी बार कॉल नहीं किया जाएगा. ऐसा तब तक होगा, जब तक लाइफ़साइकल फिर सेSTARTED
पर नहीं पहुंच जाता. (I5f607, b/352364595)
वर्शन 2.8.3
July 1, 2024
androidx.lifecycle:lifecycle-*:2.8.3
रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोड श्रिंक करने की सुविधा का इस्तेमाल करते समय, Lifecycle 2.8 के Compose 1.6.0 और इससे पहले के वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (aosp/3133056, b/346808608)
वर्शन 2.8.2
12 जून, 2024
androidx.lifecycle:lifecycle-*:2.8.2
रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose 1.6.X या इससे पहले के वर्शन के साथ Lifecycle 2.8.X का इस्तेमाल करते समय होने वाली
CompositionLocal LocalLifecycleOwner not present
गड़बड़ियों को ठीक किया गया है. अब Lifecycle 2.8.2 का इस्तेमाल, Compose के किसी भी वर्शन के साथ किया जा सकता है. इसके लिए, किसी अन्य समाधान की ज़रूरत नहीं है. (aosp/3105647, b/336842920) ViewModelProvider
के पिछले वर्शन कीcompileOnly
लाइफ़साइकल डिपेंडेंसी को 2.8+ वर्शन के साथ मिक्स करने पर, अब क्रैश नहीं होगा. साथ ही, LeakCanary जैसी लाइब्रेरी से जुड़ी समस्याएं ठीक हो जाएंगी. (I80383, b/341792251)
वर्शन 2.8.1
29 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.1
रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब
lifecycle-viewmodel-compose
सिर्फ़compose-runtime
पर निर्भर है.compose-ui
पर निर्भरता हटा दी गई है. Android आर्टफ़ैक्ट, पुराने सिस्टम के साथ काम करने की सुविधा के लिएcompose-ui
को बनाए रखता है. (aosp/3079334, b/339562627) - प्रॉपर्टी डेलिगेट का इस्तेमाल करके
ViewModel
केsaveable
इंटिग्रेशन में, अब क्लास के नाम का इस्तेमाल अपने-आप जनरेट होने वाली कुंजी के हिस्से के तौर पर किया जाता है. इससे अगर कई क्लास एक हीSavedStateHandle
का इस्तेमाल करती हैं, तो टकराव से बचा जा सकता है. (aosp/3063463)
वर्शन 2.8.0
14 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.0
रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए ज़रूरी बदलाव
LocalLifecycleOwner
को Compose यूज़र इंटरफ़ेस (यूआई) सेlifecycle-runtime-compose
में ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose यूज़र इंटरफ़ेस (यूआई) के बाहर इस्तेमाल किया जा सके.lifecycle-runtime-compose
आर्टफ़ैक्ट में अबdropUnlessResumed
औरdropUnlessStarted
एपीआई शामिल हैं. इनकी मदद से, क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. ये इवेंट,LifecycleOwner
के दिए गएLifecycle.State
से नीचे आने के बाद भी होते हैं. उदाहरण के लिए, इसका इस्तेमाल Navigation Compose के साथ किया जा सकता है. इससे, किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद, क्लिक इवेंट को हैंडल करने से बचा जा सकता है:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इससे आपको अपना डिसपैचर औरSupervisorJob()
इंजेक्ट करने की अनुमति मिलती है. इसके अलावा,runTest
में उपलब्धbackgroundScope
का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
ViewModel
को Kotlin में फिर से लिखा गया है. अब यहCloseable
के बजायAutoClosable
का इस्तेमाल करता है. अब इसमेंkey
ऑब्जेक्ट जोड़ने की सुविधा उपलब्ध है. साथ ही, इसमेंkey
की सुविधा भी है, ताकि उन्हेंgetCloseable()
के ज़रिए वापस पाया जा सके.AutoCloseable
अब बिना कुंजी के
LifecycleStartEffect
औरLifecycleResumeEffect
को कॉल करने पर गड़बड़ी होती है. यहDisposableEffect
एपीआई के लिए इस्तेमाल किए जाने वाले तरीके के मुताबिक है.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
की जगह अबLiveData.toPublisher(lifecycleOwner)
का इस्तेमाल किया जाता है.lifecycle-livedata-core-ktx
कोटलिन एक्सटेंशन को अबlifecycle-livedata-core
मॉड्यूल में ट्रांसफ़र कर दिया गया है.NullSafeMutableLiveData
को फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो.
लाइफ़साइकल Kotlin Multiplatform के साथ काम करता है
Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
, और LifecycleRegistry
में मौजूद मुख्य लाइफ़साइकल एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं.
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-common
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtime
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-runtime-ktx
अब खाली है. सभी एपीआई कोlifecycle-runtime
में ट्रांसफ़र कर दिया गया है.lifecycle-runtime-compose
सभी एपीआई कोcommon
पर ले जाता है औरandroidx.compose
के मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट शिप करता है.
ViewModel Kotlin Multiplatform के साथ काम करता है
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं.
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो java.lang.Class<T>
लेता था. अब यह kotlin.reflect.KClass<T>
लेता है.
Android पर बाइनरी फ़ाइल के साथ काम करने की सुविधा को बनाए रखा गया है. हालांकि, Android API की तुलना में सामान्य API में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProvider
इंस्टेंस कोViewModelProvider.create()
तरीकों से बनाया जाता है. इसके कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाता. ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
ViewModelProvider.Factory
से एक्सटेंड हों औरcreate
तरीके का इस्तेमाल करें. यह तरीका,CreationExtras
लेता है. इसके अलावा,viewModelFactory
Kotlin DSL का इस्तेमाल किया जा सकता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
- गैर-JVM प्लैटफ़ॉर्म पर कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
मिलेगा. JVM प्लैटफ़ॉर्म पर, अगर कोई कस्टम फ़ैक्ट्री नहीं दी जाती है, तो no-args ViewModel कंस्ट्रक्टर का इस्तेमाल करके कंपैटिबिलिटी बनाए रखी जाती है. viewModelScope
, उन प्लैटफ़ॉर्म परEmptyCoroutineContext
पर फ़ॉलबैक करेगा जहांDispatchers.Main
उपलब्ध नहीं है. उदाहरण के लिए, Linux).
इन आर्टफ़ैक्ट पर असर पड़ा है:
lifecycle-viewmodel
, ज़्यादातर एपीआई कोcommon
पर ले जाता है. साथ ही, Android के अलावा jvm और iOS के साथ काम करता है.lifecycle-viewmodel-ktx
अब खाली है. सभी एपीआई कोlifecycle-viewmodel
में ट्रांसफ़र कर दिया गया है.lifecycle-viewmodel-compose
सभी एपीआई कोcommon
पर ले जाता है औरandroidx.compose
के मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट शिप करता है.
व्यवहार में बदलाव
- अगर एक ही
clazz: KClass<VM : ViewModel>
वालाinitializer
पहले से ही जोड़ा जा चुका है, तोInitializerViewModelFactory
(इसमेंviewModelFactory
बिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentException
दिखाएगा. (Ic3a36)
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
lifecycle-*:2.8.0
के लिए, Compose का कम से कम 1.7.0-alpha05 वर्शन ज़रूरी है (b/336842920).
वर्शन 2.8.0-rc01
1 मई, 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
lifecycle-common
क्लास के लिए, बेसलाइन प्रोफ़ाइल को सही तरीके से पैकेज न करने की समस्या को ठीक किया गया है. इन्हें अबlifecycle-runtime
AAR में पैकेज किया गया है. (aosp/3038274, b/322382422)- ViewModel से जुड़े
AutoCloseable
इंस्टेंस को हटाने के क्रम में हुए अनचाहे बदलाव को ठीक किया गया है.addCloseable(String, AutoCloseable)
,addClosable(AutoCloseable)
, और फिरonCleared()
के पिछले क्रम को वापस लाया गया है. (aosp/3041632) - नेटिव और JVM डेस्कटॉप एनवायरमेंट के लिए,
viewModelScope
के डिफ़ॉल्ट क्रिएशन बिहेवियर को बेहतर बनाया गया है. (aosp/3039221)
बाहरी योगदान
- JVM Desktop पर मुख्य थ्रेड की जांच करने की सुविधा को बेहतर बनाने के लिए, Victor Kropp का धन्यवाद. (aosp/3037116)
वर्शन 2.8.0-beta01
17 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-compose
आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके कोड कोcommon
में ले जाया गया है. साथ ही, यहandroidx.compose
के लिए मल्टीप्लैटफ़ॉर्म सपोर्ट से मेल खाने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. (If7a71, I4f4a0, b/331769623)
वर्शन 2.8.0-alpha04
3 अप्रैल, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
आर्टफ़ैक्ट अब Kotlin Multiplatform के साथ काम करता है. इसके कोड कोcommon
में ले जाया गया है. साथ ही, यहandroidx.compose
की मल्टीप्लेटफ़ॉर्म सुविधा के साथ काम करने वाला Android आर्टफ़ैक्ट उपलब्ध कराता है. इस बदलाव को लागू करने के लिए, कंपोज़ेबलviewModel
तरीके में अबjava.lang.Class
के साथ-साथKClass
भी स्वीकार किया जाता है. (b/330323282)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
को फिर से बनाया गया है, ताकि फ़ॉल्स पॉज़िटिव की संख्या कम हो. (I2d8c1, Iafb18, I03463, I7ecef)
डिपेंडेंसी अपडेट
lifecycle-viewmodel-compose
आर्टफ़ैक्ट अब Compose 1.6.0 पर निर्भर करता है.- लाइफ़साइकल अब Profile Installer 1.3.1 पर निर्भर करता है.
वर्शन 2.8.0-alpha03
20 मार्च, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
ViewModel.viewModelScope
अब बदला जा सकने वाला कंस्ट्रक्टर पैरामीटर है. इससे आपको अपना डिसपैचर औरSupervisorJob()
इंजेक्ट करने की अनुमति मिलती है. इसके अलावा,runTest
में उपलब्धbackgroundScope
का इस्तेमाल करके, डिफ़ॉल्ट को बदला जा सकता है. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin Multiplatform के साथ काम करने की सुविधा
lifecycle-viewmodel
आर्टफ़ैक्ट और ViewModel
, ViewModelStore
, ViewModelStoreOwner
, और ViewModelProvider
जैसे एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं. (b/214568825)
इस बदलाव को लागू करने के लिए, ViewModelProvider
पर मौजूद उन तरीकों के लिए अब एक नया तरीका उपलब्ध है जो java.lang.Class<T>
लेता था. अब यह kotlin.reflect.KClass<T>
लेता है.
Android पर बाइनरी फ़ाइल के साथ काम करने की सुविधा को बनाए रखा गया है. हालांकि, Android API की तुलना में सामान्य API में कुछ खास बदलाव किए गए हैं:
- अब
ViewModelProvider
इंस्टेंस कोViewModelProvider.create()
तरीकों से बनाया जाता है. इसके कंस्ट्रक्टर को सीधे तौर पर कॉल नहीं किया जाता. ViewModelProvider.NewInstanceFactory
औरViewModelProvider.AndroidViewModelFactory
सिर्फ़ Android पर उपलब्ध हैं.- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
ViewModelProvider.Factory
से एक्सटेंड हों औरcreate
तरीके का इस्तेमाल करें. यह तरीका,CreationExtras
लेता है. इसके अलावा,viewModelFactory
Kotlin DSL का इस्तेमाल किया जा सकता है.
- हमारा सुझाव है कि कस्टम फ़ैक्ट्रियां,
- गैर-JVM प्लैटफ़ॉर्म पर कस्टम फ़ैक्ट्री के बिना
ViewModelProvider
का इस्तेमाल करने पर,UnsupportedOperationException
मिलेगा. JVM प्लैटफ़ॉर्म पर, अगर कोई कस्टम फ़ैक्ट्री नहीं दी जाती है, तो no-args ViewModel कंस्ट्रक्टर का इस्तेमाल करके कंपैटिबिलिटी बनाए रखी जाती है. viewModelScope
, उन प्लैटफ़ॉर्म परEmptyCoroutineContext
पर फ़ॉलबैक करेगा जहांDispatchers.Main
उपलब्ध नहीं है. उदाहरण के लिए, Linux).
व्यवहार में बदलाव
- अगर एक ही
clazz: KClass<VM : ViewModel>
वालाinitializer
पहले से ही जोड़ा जा चुका है, तोInitializerViewModelFactory
(इसमेंviewModelFactory
बिल्डर फ़ंक्शन भी शामिल है) अबIllegalArgumentException
दिखाएगा. (Ic3a36)
गड़बड़ियां ठीक की गईं
ViewModel.getCloseable
अब डुप्लीकेट कुंजियों को मैनेज करता है: अगरkey
से पहले से ही कोईAutoCloseable
संसाधन जुड़ा हुआ है, तो पुराने संसाधन को तुरंत बदल दिया जाएगा और बंद कर दिया जाएगा. (Ibeb67)- अब
ViewModel
केviewModelScope
को ऐक्सेस करना थ्रेड सेफ़ है. (If4766, b/322407038)
बाहरी योगदान
LocalLifecycleOwner
को Compose UI से lifecycle-runtime-compose पर ले जाया गया है, ताकि इसके Compose पर आधारित हेल्पर एपीआई को Compose UI के बाहर इस्तेमाल किया जा सके. योगदान देने के लिए, Jake Wharton का धन्यवाद. (I6c41b, b/328263448)
वर्शन 2.8.0-alpha02
21 फ़रवरी, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
dropUnlessResumed
औरdropUnlessStarted
एपीआई जोड़े गए हैं. इनकी मदद से, क्लिक या अन्य इवेंट को ड्रॉप किया जा सकता है. ये इवेंट,LifecycleOwner
के दिए गएLifecycle.State
से नीचे आने के बाद भी होते हैं. उदाहरण के लिए, इसका इस्तेमाल Navigation Compose के साथ किया जा सकता है, ताकि किसी दूसरी स्क्रीन पर ट्रांज़िशन शुरू होने के बाद क्लिक इवेंट को हैंडल न किया जा सके:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin कन्वर्ज़न
ViewModel
को अब Kotlin में लिखा गया है (I16f26, b/214568825)lifecycle-viewmodel-ktx
Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Id787b, b/274800183)lifecycle-runtime-ktx
Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (Ic3686, b/274800183)lifecycle-livedata-core-ktx
Kotlin एक्सटेंशन को अब बेस लाइफ़साइकल मॉड्यूल में ले जाया गया है. (I54a3d, b/274800183)
Kotlin Multiplatform के साथ काम करने की सुविधा
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
, औरLifecycleRegistry
में मौजूद मुख्य लाइफ़साइकल एपीआई अब Kotlin Multiplatform के साथ काम करने वाले आर्टफ़ैक्ट में उपलब्ध हैं. (b/317249252)
एपीआई में हुए बदलाव
- अब बिना कुंजी के
LifecycleStartEffect
औरLifecycleResumeEffect
को कॉल करने पर गड़बड़ी होती है. यहDisposableEffect
एपीआई के लिए इस्तेमाल किए जाने वाले तरीके के मुताबिक है. (Ib0e0c, b/323518079) ViewModel
अबCloseable
के बजायAutoCloseable
का इस्तेमाल करता है. यह पुराने सिस्टम के साथ काम करने वाला बदलाव है. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
की जगह अबLiveData.toPublisher(lifecycleOwner)
का इस्तेमाल किया जाता है. (Iabe29, b/262623005)
बाहरी योगदान
- Jetbrains के इवान मैटकोव का धन्यवाद. उन्होंने Lifecycle को Kotlin Multiplatform पर माइग्रेट करने में हमारी मदद की. (aosp/2926690, I0c5ac, If445d)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
ViewModel
में अबCloseable
ऑब्जेक्ट जोड़े जा सकते हैं. इनमेंkey
होता है, ताकि उन्हेंgetCloseable()
के ज़रिए वापस पाया जा सके. (I3cf63)
वर्शन 2.7
वर्शन 2.7.0
10 जनवरी, 2024
androidx.lifecycle:lifecycle-*:2.7.0
रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.
2.6.0 के बाद हुए ज़रूरी बदलाव
TestLifecycleOwner
में अब निलंबित करने वाला फ़ंक्शनsetCurrentState()
शामिल है. यह फ़ंक्शन यह पक्का करता है कि स्थिति में बदलाव और सभीLifecycleObserver
कॉलबैक पूरे हो जाएं. खास तौर पर,currentState
प्रॉपर्टी को सीधे तौर पर सेट करने के बजाय, यहrunBlocking
का इस्तेमाल नहीं करता है. इसलिए, इसेrunTest
की ओर से उपलब्ध कराई गई कोरूटीन जैसी कोरूटीन में इस्तेमाल करना सुरक्षित है.map
औरswitchMap
केLiveData
एक्सटेंशन अबdistinctUntilChanged
के जैसा काम करते हैं. अगरLiveData
मेंvalue
सेट है, तोmap
/switchMap
फ़ंक्शन को तुरंत कॉल किया जाएगा, ताकि रिटर्न किए गएLiveData
केvalue
को भरा जा सके. इससे यह पक्का होता है किobserveAsState()
के साथ इस्तेमाल करने पर, शुरुआती वैल्यू को पहली कंपोज़िशन के हिस्से के तौर पर सेट किया जाएगा. हालांकि, इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveData
से अपडेट की गई वैल्यू,LiveData
को ऑब्ज़र्व करना शुरू करने के बाद ही लागू होंगी.- इस रिलीज़ में, एक समस्या को ठीक किया गया है. इस समस्या में, प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandle
कस्टमParcelable
क्लास को ठीक से वापस नहीं लाता था. Android फ़्रेमवर्क की वजह से टाइप की जानकारी मिट जाती है. इसलिए, कस्टम पार्सलेबल के ऐरे के लिए अतिरिक्त काम करना पड़ता है. जैसे, सही टाइप का टाइप किया गया ऐरे मैन्युअल तरीके से बनाना. साथ ही,get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब इस सीमा के बारे में खास तौर पर बताया गया है. LifecycleObserver
से जुड़े proguard keep नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले ProGuard कोड (जैसे कि लंबे समय से इस्तेमाल न किया जा रहा@OnLifecycleEvent
एनोटेशन) को, इस्तेमाल के अपने खास मामले के लिए, नियमों को बनाए रखने की सुविधा देनी होगी.
लाइफ़साइकल इवेंट की निगरानी करना
LifecycleEventObserver
का इस्तेमाल करने के बजाय, अबLifecycle.asFlow()
एक्सटेंशन के तरीके सेLifecycle.Event
केFlow
को देखा जा सकता है.- Jetpack Compose का इस्तेमाल करने वाले लोग अब
Lifecycle.Event
के आधार पर Compose साइड इफ़ेक्ट चलाने के लिए,LifecycleEventEffect
का इस्तेमाल कर सकते हैं.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose का इस्तेमाल करने वाले लोग,
LifecycleStartEffect
औरLifecycleResumeEffect
का इस्तेमाल करके, इवेंट के जोड़ों को मैनेज कर सकते हैं. जैसे, शुरू से बंद और फिर से शुरू से रोके गए इवेंट. यह एपीआई,DisposableEffect
में मौजूद एपीआई की तरह ही काम करता है. यह उन मामलों के लिए सही है जहां स्थिति में सुधार होने पर किए गए बदलाव को, स्थिति में गिरावट आने पर वापस लाना होता है.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
ज़्यादा जानकारी के लिए, लाइफ़साइकल इवेंट पर कोड चलाना लेख पढ़ें.
लाइफ़साइकल की स्थिति को मॉनिटर करने की सुविधा
- मौजूदा
Lifecycle.State
को अबLifecycle.currentStateFlow
प्रॉपर्टी के ज़रिए देखा जा सकता है. यह एकStateFlow
दिखाता है, जिसमेंvalue
मौजूदाLifecycle.State
होता है. - Jetpack Compose का इस्तेमाल करने वाले लोग,
Lifecycle.currentStateAsState()
एक्सटेंशन का इस्तेमाल करके,Lifecycle.State
को सीधे तौर पर ComposeState
के तौर पर दिखा सकते हैं. यहlifecycle.currentStateFlow.collectAsState()
के बराबर है और इसका छोटा विकल्प है.
ज़्यादा जानकारी के लिए, फ़्लो की मदद से लाइफ़साइकल की स्थिति इकट्ठा करना लेख पढ़ें.
वर्शन 2.7.0-rc02
13 दिसंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
रिलीज़ हो गया है. वर्शन 2.7.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसी समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandle
कस्टमParcelable
क्लास को ठीक से रीस्टोर नहीं करता था. Android फ़्रेमवर्क की वजह से टाइप की जानकारी मिट जाती है. इसलिए, कस्टम पार्सलेबल के ऐरे के लिए अतिरिक्त काम करना पड़ता है. जैसे, सही टाइप का टाइप किया गया ऐरे मैन्युअल तरीके से बनाना. साथ ही,get
,getLiveData
, औरgetStateFlow
के दस्तावेज़ में अब इस सीमा के बारे में खास तौर पर बताया गया है. (I0b55a)
वर्शन 2.7.0-rc01
15 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LifecycleStartEffect
औरLifecycleResumeEffect
अबLifecycleOwner
में बदलाव होने पर, इफ़ेक्ट ब्लॉक को सही तरीके से हटाते हैं और फिर से बनाते हैं. (Ia25c6)
वर्शन 2.7.0-beta01
1 नवंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01
को बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.
- बीटा वर्शन में बदलाव किया गया है. इस रिलीज़ वर्शन में कोई बड़ा बदलाव नहीं किया गया है.
वर्शन 2.7.0-alpha03
18 अक्टूबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-testing
में अब एक नया Lint चेक शामिल है. इससे कोरूटीन के अंदरcurrentState
फ़ील्ड का इस्तेमाल करके,TestLifecycleOwner
केLifecycle.State
को सेट करने से बचा जा सकता है. लिंट चेक अबsetCurrentState
को निलंबित करने का सुझाव देता है. इससेLifecycle.State
को ब्लॉक किए बिना सेट किया जा सकता है. (Icf728, b/297880630)
गड़बड़ियां ठीक की गईं
LiveData.switchMap
से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, शुरुआती कॉल और उसके बाद के कॉल, दोनों में एक हीLiveData
इंस्टेंस को वापस लाने पर,LiveData
इंस्टेंस को सोर्स के तौर पर जोड़ने से रोका जाता था. (Ibedcba7)
वर्शन 2.7.0-alpha02
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
TestLifecycleOwner
में अब सस्पेंड करने वाला फ़ंक्शनsetCurrentState()
शामिल है. इससे उपयोगकर्ताओं कोrunTest
की ओर से उपलब्ध कराई गई कोरूटीन मेंTestLifecycleOwner
का इस्तेमाल करने का विकल्प मिलता है. (I329de, b/259344129)
एपीआई में हुए बदलाव
lifecycle-livedata-ktx
मॉड्यूल की सभी फ़ाइलों को मुख्यlifecycle-livedata
मॉड्यूल में ले जाया गया है. (I10c6f, b/274800183)
व्यवहार में बदलाव
LiveData.map()
औरLiveData.switchMap()
एक्सटेंशन, अब लौटाए गएLiveData
काvalue
सेट करते हैं. ऐसा तब होता है, जब पिछलेLiveData
में कोई वैल्यू सेट की गई हो. इससे यह पक्का होता है कि Jetpack Compose में नतीजे के तौर पर मिले LiveData का इस्तेमाल करने पर, शुरुआती कंपोज़िशन में सही स्थिति हो. (I91d2b, b/269479952)- अगर
ViewModel
को पहले हीonCleared()
पर कॉल मिल चुका है, तोViewModel
काaddCloseable()
अबCloseable
को तुरंत बंद कर देता है. (I4712e, b/280294730)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.6.2
: हमने एक समस्या को ठीक किया है. इस समस्या में, प्रोसेस बंद होने के बादSavedStateHandle
को सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था, पैरंटSavedStateRegistry
में स्थिति को सेव किए बिनाsave()
को कॉल किया जाता था, और फिर स्थिति को दोबारा रीस्टोर किया जाता था. इससे,rememberSaveable
और Navigation Compose केNavHost
के बीच इंटरैक्शन की समस्या ठीक हो जाती है. (aosp/2729289)
वर्शन 2.7.0-alpha01
26 जुलाई, 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Lifecycle.State
को अबLifecycle.currentStateFlow
के ज़रिए कंपोज़ किया जा सकता है. इससेStateFlow
मिलता है, जहांvalue
मौजूदाLifecycle.State
होता है. (Ib212d, b/209684871)Lifecycle.Event
s को अबFlow
के तौर पर देखा जा सकता है. साथ ही,Lifecycle.asFlow().
(If2c0f, b/176311030)LifecycleResumeEffect
एपीआई कोLifecycle.Event.ON_RESUME
औरLifecycle.Event.ON_PAUSE
, दोनों इवेंट कॉलबैक के आधार पर कंपोज़SideEffect
चलाने के लिए जोड़ा गया है. (I60386, b/235529345)LifecycleStartEffect
एपीआई कोLifecycle.Event.ON_START
औरLifecycle.Event.ON_STOP
इवेंट के कॉल बैक के आधार पर, कंपोज़SideEffect
s को चलाने के लिए जोड़ा गया है. (I5a8d1, b/235529345)LifecycleEventEffect
एपीआई कोLifecycle.Event
के आधार पर ComposeSideEffect
s चलाने के लिए जोड़ा गया है. (Ic9794, b/235529345)Lifecycle.collectAsState()
एक्सटेंशन को सीधे तौर परLifecycle.State
को ComposeState
के तौर पर दिखाने के लिए जोड़ा गया है. यहlifecycle.currentStateFlow.collectAsState()
के बराबर है और इसका छोटा विकल्प है. (I11015, b/235529345)
गड़बड़ियां ठीक की गईं
- अगर पिछली
LiveData
के लिए कोई वैल्यू सेट की गई है, तो अबLiveData.distinctUntilChanged()
एक्सटेंशन, दिखाई गईLiveData
के लिएvalue
सेट करता है. इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveData
से अपडेट की गई वैल्यू, सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()
से मिलेLiveData
को ऑब्ज़र्व करना शुरू किया जाएगा. (Ib482f) LifecycleObserver
से जुड़े proguard keep नियमों को हटा दिया गया है. इसका मतलब है कि रिफ़्लेक्शन के ज़रिए एपीआई का इस्तेमाल करने वाले ProGuard कोड को, इस्तेमाल के अपने खास मामले के लिए, अपने कीप नियम देने होंगे. (Ia12fd)
वर्शन 2.6
वर्शन 2.6.2
6 सितंबर, 2023
androidx.lifecycle:lifecycle-*:2.6.2
रिलीज़ हो गया है. वर्शन 2.6.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
SavedStateHandle
को सही तरीके से रीस्टोर नहीं किया जाता था. ऐसा तब होता था, जब स्थिति को रीस्टोर किया जाता था,save()
को पैरंटSavedStateRegistry
में स्थिति को सेव किए बिना कॉल किया जाता था, और फिर स्थिति को फिर से रीस्टोर किया जाता था. इससे,rememberSaveable
और Navigation Compose केNavHost
के बीच इंटरैक्शन की समस्या ठीक हो जाती है. (aosp/2729289)
वर्शन 2.6.1
22 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.1
रिलीज़ हो गया है. वर्शन 2.6.1 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
lifecycle-viewmodel-savedstate
अब SavedState1.2.1
पर निर्भर करता है. (cd7251)- लाइफ़साइकल अब ProfileInstaller
1.3.0
पर निर्भर करता है. (f9d30b)
वर्शन 2.6.0
8 मार्च, 2023
androidx.lifecycle:lifecycle-*:2.6.0
रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.
2.5.0 के बाद हुए ज़रूरी बदलाव
LiveData
में अब एक नईisInitialized
प्रॉपर्टी शामिल है. इससे पता चलता है किLiveData
पर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value
,null
वैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी या कोई वैल्यू सेट की गई थी.null
MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है.collectAsStateWithLifecycle()
केStateFlow
औरFlow
पर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, इसकी नई वैल्यू को कंपोज़ स्टेट के तौर पर दिखाता है.Lifecycle.launchWhenX
औरLifecycle.whenX
तरीकों को बंद कर दिया गया है, क्योंकि पॉज़ करने वाले डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. एक बार काम को निलंबित करने के बारे में ज़्यादा जानकारी के लिए, कृपया यह जानकारी देखें. इसमें बताया गया है कि यह सुविधा सुरक्षित क्यों नहीं है.- Kotlin कन्वर्ज़न - कई Lifecycle क्लास को Kotlin में बदल दिया गया है. बदली गई सभी क्लास, पिछले वर्शन के साथ बाइनरी कंपैटिबिलिटी बनाए रखती हैं. Kotlin में लिखी गई क्लास के लिए, इन क्लास में सोर्स के साथ काम न करने वाले बदलाव किए गए हैं:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
नीचे दी गई टेबल में, लाइफ़साइकल के नए वर्शन के लिए सोर्स कन्वर्ज़न दिए गए हैं.
लाइफ़साइकल 2.5 | लाइफ़साइकल 2.5 (KTX) | लाइफ़साइकल 2.6 |
---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin में बनाए गए
Observer
केonChanged
तरीके में, वैल्यू न होने की स्थिति अब जेनरिक टाइप से मेल खाती है. अगर आपकोObserver.onChanged()
को नल वैल्यू स्वीकार करने वाले टाइप के तौर पर इस्तेमाल करना है, तो आपकोObserver
को नल वैल्यू स्वीकार करने वाले टाइप के साथ इंस्टैंशिएट करना होगा. - इन क्लास को भी Kotlin में बदल दिया गया है, लेकिन ये सोर्स के साथ काम करती हैं:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
वर्शन 2.6.0-rc01
22 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर पिछली
LiveData
के लिए कोई वैल्यू सेट की गई है, तो अबLiveData.distinctUntilChanged()
एक्सटेंशन, दिखाई गईLiveData
के लिएvalue
सेट करता है. इससे ऑब्ज़र्वेशन के तरीके में कोई बदलाव नहीं होता. सोर्सLiveData
से अपडेट की गई वैल्यू, सिर्फ़ तब लागू होंगी, जबdistinctUntilChanged()
से मिलेLiveData
को ऑब्ज़र्व करना शुरू किया जाएगा. (Ib482f)
वर्शन 2.6.0-beta01
8 फ़रवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
LifecycleOwner
को अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetLifecycle()
फ़ंक्शन को लागू करने के बजाय,lifecycle
प्रॉपर्टी को बदलना होगा. (I75b4b, b/240298691)ViewModelStoreOwner
को अब Kotlin में उपलब्ध कराया गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछलेgetViewModelStore()
फ़ंक्शन को लागू करने के बजाय,viewModelStore
प्रॉपर्टी को बदलना होगा. (I86409, b/240298691)LifecycleOwner
पर मौजूद Kotlin एक्सटेंशन,lifecycleScope
फ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (I41d78, b/240298691)Lifecycle
पर मौजूद Kotlin एक्सटेंशन,coroutineScope
फ़ील्ड उपलब्ध कराता है. इसेlifecycle-runtime-ktx
सेlifecycle-common
आर्टफ़ैक्ट में ले जाया गया है. (Iabb91, b/240298691)
वर्शन 2.6.0-alpha05
25 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
रिलीज़ हो गया है. वर्शन 2.6.0-alpha05 में ये बदलाव शामिल हैं.
Kotlin कन्वर्ज़न
Transformations
को अब Kotlin में लिखा गया है. Kotlin में लिखी गई उन क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है जो सीधे तौर परTransformations.map
जैसे सिंटैक्स का इस्तेमाल कर रही थीं. Kotlin कोड को अब Kotlin एक्सटेंशन के तरीके वाले सिंटैक्स का इस्तेमाल करना होगा. यह सिंटैक्स, पहले सिर्फ़lifecycle-livedata-ktx
का इस्तेमाल करते समय उपलब्ध था. Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल करते समय, इन तरीकों के ऐसे वर्शन इस्तेमाल नहीं किए जा सकते जोandroidx.arch.core.util.Function
तरीके का इस्तेमाल करते हैं. इनकी जगह, KotlinFunction1
का इस्तेमाल करने वाले वर्शन का इस्तेमाल किया जा सकता है. इस बदलाव से बाइनरी कंपैटबिलिटी बनी रहती है. (I8e14f)ViewTreeViewModelStoreOwner
को अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeViewModelStoreOwner
औरandroidx.lifecycle.findViewTreeViewModelStoreOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट किया जा सके और ढूंढा जा सके. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (Ia06d8, Ib22d8, b/240298691)HasDefaultViewModelProviderFactory
इंटरफ़ेस को अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब उन्हें पिछले फ़ंक्शन को लागू करने के बजाय,defaultViewModelProviderFactory
औरdefaultViewModelCreationExtras
प्रॉपर्टी को बदलना होगा. (Iaed9c, b/240298691)Observer
को अब Kotlin में लिखा गया है. इसकेonChanged()
तरीके में, अब पैरामीटर के लिएvalue
नाम का इस्तेमाल किया जाता है. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
, औरProcessLifecycleOwner
को अब Kotlin में लिखा गया है (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
वर्शन 2.6.0-alpha04
11 जनवरी, 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
रिलीज़ हो गया है. वर्शन 2.6.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
LiveData
में अब एक नईisInitialized
प्रॉपर्टी शामिल है. इससे पता चलता है किLiveData
पर कभी कोई वैल्यू सेट की गई है या नहीं. इससे आपको यह पता लगाने में मदद मिलती है किliveData.value
,null
वैल्यू इसलिए दिखा रहा है, क्योंकि कभी कोई वैल्यू सेट नहीं की गई थी या कोई वैल्यू सेट की गई थी.null
(Ibd018)
एपीआई में हुए बदलाव
lifecycle-runtime-compose
केcollectAsStateWithLifecycle()
एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं. (I09d42, b/258835424)Lifecycle.launchWhenX
औरLifecycle.whenX
तरीकों को बंद कर दिया गया है, क्योंकि पॉज़ करने वाले डिस्पैचर का इस्तेमाल करने से कुछ मामलों में संसाधनों का नुकसान हो सकता है. हमारा सुझाव है कि आपLifecycle.repeatOnLifecycle
का इस्तेमाल करें. (Iafc54, b/248302832)
Kotlin कन्वर्ज़न
ViewTreeLifecycleOwner
को अब Kotlin में लिखा गया है. Kotlin में लागू की गई क्लास के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. अब आपकोandroidx.lifecycle.setViewTreeLifecycleOwner
औरandroidx.lifecycle.findViewTreeLifecycleOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे तौर पर इंपोर्ट और इस्तेमाल करना होगा, ताकि पहले से सेट किए गए मालिक को सेट किया जा सके और ढूंढा जा सके. यहlifecycle-runtime-ktx
में मौजूद पिछले Kotlin एक्सटेंशन की जगह ले लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए कोड के लिए, सोर्स के साथ काम करता है. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
को अब Kotlin में लिखा गया है.lifecycle-reactivestreams-ktx
में मौजूद Kotlin एक्सटेंशन को अबlifecycle-reactivestreams
मॉड्यूल में ले जाया गया है. साथ ही, ये Kotlin में लिखे गए कोड के लिए प्राइमरी सर्फ़ेस बन गए हैं. अगर आपने पहले से Kotlin एक्सटेंशन के तरीके वाले एपीआई का इस्तेमाल नहीं किया है, तो Kotlin में लिखे गए कोड के लिए यह सोर्स के साथ काम न करने वाला बदलाव है. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
, औरViewModelStore
को अब Kotlin में लिखा गया है (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
गड़बड़ियां ठीक की गईं
SavedStateHandle
में अबClassCastException
के साथ क्रैश होने की समस्या नहीं होती है. यह समस्या,get()
को गलत क्लास टाइप के साथ कॉल करने पर होती थी. (I6ae7c)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल के अलग-अलग मॉड्यूल के बीच की रुकावटों से जुड़ी समस्या को ठीक किया गया है. (I18d0d, b/249686765)
LifecycleRegistry.moveToState()
से मिलने वाली गड़बड़ियों के मैसेज में अब ज़्यादा जानकारी शामिल होती है. इससे डेवलपर को उस कॉम्पोनेंट के बारे में पता चलता है जिसकी वजह से गड़बड़ी हुई है. (Idf4b2, b/244910446)
वर्शन 2.6.0-alpha02
7 सितंबर, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MediatorLiveData
में अब शुरुआती वैल्यू सेट करने के लिए एक कंस्ट्रक्टर शामिल है. (Ib6cc5, b/151244085)
गड़बड़ियां ठीक की गईं
Lifecycle
आर्टफ़ैक्ट में अब constraints शामिल हैं. इनसे यह पक्का किया जाता है कि एक-दूसरे पर निर्भर लाइफ़साइकल के सभी आर्टफ़ैक्ट, एक ही वर्शन का इस्तेमाल करें. साथ ही, किसी एक आर्टफ़ैक्ट को अपग्रेड करने पर, अन्य डिपेंडेंसी अपने-आप अपग्रेड हो जाती हैं. b/242871265FlowLiveData.asFlow()
अब थ्रेड-सेफ़्टी और कॉन्टेक्स्ट को सुरक्षित रखने के लिए, अपनेChannel
को लागू करने के बजायcallbackFlow
बनाता है. (I4a8b2, b/200596935)FlowLiveData
काasLiveData
फ़ंक्शन, अब नयाLiveData
ऑब्जेक्ट बनाते समयStateFlow
की शुरुआती वैल्यू को सुरक्षित रखेगा. (I3f530, b/157380488)- लाइफ़साइकल
2.5.1
से:AndroidViewModelFactory
के कस्टम इंप्लीमेंटेशन, अबLifecycle
2.4+ (I5b315, b/238011621) के साथ स्टेटफ़ुल कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल करते हैं
वर्शन 2.6.0-alpha01
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
collectAsStateWithLifecycle
केStateFlow
औरFlow
पर एक नया एक्सटेंशन जोड़ा गया है. यह एक्सटेंशन, फ़्लो से डेटा इकट्ठा करता है और लाइफ़साइकल के हिसाब से, इसकी नई वैल्यू को Compose State के तौर पर दिखाता है. लाइफ़साइकल के कम से कम किसीLifecycle.State
में होने पर, फ़्लो इकट्ठा किया जाता है और नया उत्सर्जन, राज्य की वैल्यू पर सेट किया जाता है. लाइफ़साइकल केLifecycle.State
से कम होने पर, फ़्लो कलेक्शन बंद हो जाता है और State की वैल्यू अपडेट नहीं होती है. (I1856e, b/230557927)
वर्शन 2.5
वर्शन 2.5.1
27 जुलाई, 2022
androidx.lifecycle:lifecycle-*:2.5.1
रिलीज़ हो गया है. वर्शन 2.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
AndroidViewModelFactory
के कस्टम तरीके से लागू किए गए वर्शन, अबLifecycle
2.4+ के साथ स्टेटफ़ुलAndroidViewModelFactory
कंस्ट्रक्टर का इस्तेमाल करते समय,create(modelClass)
फ़ंक्शन को सही तरीके से कॉल करते हैं. (I5b315, b/238011621)
वर्शन 2.5.0
29 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0
रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
SavedStateHandle
अबgetStateFlow()
एपीआई उपलब्ध कराता है. यहLiveData
के बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlow
दिखाता है.ViewModel CreationExtras - कस्टम
ViewModelProvider.Factory
लिखते समय, अबApplication
याSavedStateHandle
का ऐक्सेस पाने के लिए,AndroidViewModelFactory
याAbstractSavedStateViewModelFactory
को बढ़ाने की ज़रूरत नहीं है. इसके बजाय, इन फ़ील्ड कोcreate
के नए ओवरलोड के ज़रिए,CreationExtras
के तौर पर हरViewModelProvider.Factory
सबक्लास को उपलब्ध कराया जाता है:create(Class<T>, CreationExtras)
. Activity1.5.0
और Fragment1.5.0
का इस्तेमाल करने पर, ये एक्स्ट्रा अपने-आप आपकी गतिविधि या फ़्रैगमेंट से मिल जाते हैं.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
lifecycle-viewmodel
अबviewModelFactory
Kotlin DSL उपलब्ध कराता है. इसकी मदद से, एक या उससे ज़्यादा लैम्डा इनिशियलाइज़र के हिसाब सेViewModelProvider.Factory
तय किया जा सकता है. कस्टम फ़ैक्ट्री के साथ काम करने वाली हरViewModel
क्लास के लिए, एक लैम्डा इनिशियलाइज़र का इस्तेमाल किया जाता है. इसके लिए,CreationExtras
को मुख्य डेटा सोर्स के तौर पर इस्तेमाल किया जाता है.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
lifecycle-viewmodel-compose
अब एकviewModel()
एपीआई उपलब्ध कराता है. यहViewModel
इंस्टेंस बनाने के लिए, लैम्डा फ़ैक्ट्री लेता है. इसके लिए, कस्टमViewModelProvider.Factory
बनाने की ज़रूरत नहीं होती.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
SavedStateHandle Compose Saver Integration -
lifecycle-viewmodel-compose
आर्टफ़ैक्ट में अबSavedStateHandle.saveable
में नए एक्सपेरिमेंटल एपीआई शामिल हैं. इनकी मदद से,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 में इंजेक्ट किया जा सके, लेकिन जिसे टेस्टिंग के ज़रिए कंट्रोल किया जा सके, तो
CoroutineScope
बनाएं. यहCloseable
को लागू करता है:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
इसका इस्तेमाल आपके
ViewModel
कंस्ट्रक्टर में किया जा सकता है. हालांकि,viewModelScope
की तरह ही इसकी लाइफ़टाइम भी बनी रहती है:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
व्यवहार में बदलाव
INITIALIZED
सेDESTROYED
मेंLifecycle.State
को ट्रांसफ़र करने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
से कोई ऑब्ज़र्वर जुड़ा हो या न हो.LifecycleRegistry
की स्थितिDESTROYED
पर पहुंचने के बाद, उसके सभी ऑब्ज़र्वर हट जाएंगे.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- compileOnly Lifecycle डिपेंडेंसी के पिछले वर्शन को 2.5 और इसके बाद के वर्शन के साथ मिक्स करने पर,
ViewModelProvider
अब क्रैश नहीं होगा. (I81a66, b/230454566)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
MediatorLiveData.addSource()
अबnull
सोर्स को ऑब्ज़र्वर तक पहुंचाने के बजाय,null
सोर्स पास करने परNullPointerException
दिखाता है.(Ibd0fb, b/123085232)
वर्शन 2.5.0-beta01
20 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle.saveable
में प्रॉपर्टी डेलिगेट जोड़े गए, ताकि प्रॉपर्टी के नामों को कुंजियों के तौर पर इस्तेमाल करकेSavedStateHandle
में स्थिति को बनाए रखा जा सके (I8bb86, b/225014345)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें बॉटम नेविगेशन टैब में एक
NavHost
को दूसरेNavHost
में नेस्ट करने पर, कई बैक स्टैक का इस्तेमाल करते समयIllegalStateException
दिखता था. (I11bd5, b/228865698)
वर्शन 2.5.0-alpha06
6 अप्रैल, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
रिलीज़ हो गया है. वर्शन 2.5.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
rememberSaveable
के बराबर बनाने के लिए,SavedStateHandle.saveable
में एक्सपेरिमेंट के तौर परMutableState
ओवरलोड जोड़ा गया (I38cfe, b/224565154)
एपीआई में हुए बदलाव
CreationExtras
अब सील किए गए के बजाय ऐब्स्ट्रैक्ट है. (Ib8a7a)
गड़बड़ियां ठीक की गईं
SavedStateHandleController
की वजह से होने वालीIllegalStateException: Already attached to lifecycleOwner
गड़बड़ी को ठीक किया गया. (I7ea47, b/215406268)
वर्शन 2.5.0-alpha05
23 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
रिलीज़ हो गया है. वर्शन 2.5.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-viewmodel-compose
मॉड्यूल अबSavedStateHandleSaver
उपलब्ध कराता है. यह एक एक्सपेरिमेंटल एपीआई है. यह पक्का करता है किSavedStateHandle
में मौजूद वैल्यू, उसी सेव किए गए इंस्टेंस की स्थिति के साथ सही तरीके से इंटिग्रेट की गई हों जिसका इस्तेमालrememberSaveable
करता है. (Ia88b7, b/195689777)
एपीआई में हुए बदलाव
- Java में, Lifecycle 2.3 और Lifecycle के नए वर्शन के साथ काम न करने की समस्या को ठीक किया गया है. (I52c8a, b/219545060)
गड़बड़ियां ठीक की गईं
SavedStateViewFactory
अबCreationExtras
का इस्तेमाल करने की सुविधा देता है. भले ही, इसेSavedStateRegistryOwner
के साथ शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
वर्शन 2.5.0-alpha04
9 मार्च, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
रिलीज़ हो गया है. वर्शन 2.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle
अबgetStateFlow()
एपीआई उपलब्ध कराता है. यहLiveData
के बजाय, वैल्यू में होने वाले बदलावों को मॉनिटर करने के लिए KotlinStateFlow
दिखाता है. (Iad3ab, b/178037961)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
addCloseable()
एपीआई और नया कंस्ट्रक्टर ओवरलोड जोड़ा गया है. इनकी मदद से,ViewModel
में एक या उससे ज़्यादाCloseable
ऑब्जेक्ट जोड़े जा सकते हैं.ViewModel
को हटाने पर, ये ऑब्जेक्ट बंद हो जाएंगे. इसके लिए,onCleared()
में मैन्युअल तरीके से कोई कार्रवाई करने की ज़रूरत नहीं होगी. (I55ea0)lifecycle-viewmodel
अब एकInitializerViewModelFactory
उपलब्ध कराता है. इसकी मदद से,CreationExtras
को प्राइमरी डेटा सोर्स के तौर पर इस्तेमाल करके,ViewModel
क्लास को हैंडल करने के लिए लैम्डा जोड़ा जा सकता है. (If58fc, b/216687549)lifecycle-viewmodel-compose
अबviewModel()
एपीआई उपलब्ध कराता है. यहViewModel
इंस्टेंस बनाने के लिए, लैम्डा फ़ैक्ट्री लेता है. इसके लिए, कस्टमViewModelProvider.Factory
बनाने की ज़रूरत नहीं होती. (I97fbb, b/216688927)
एपीआई में हुए बदलाव
- अब
lifecycle-viewmodel-compose
के ज़रिए,CreationExtras
के साथViewModel
बनाया जा सकता है. (I08887, b/216688927)
व्यवहार में बदलाव
Lifecycle.State
कोINITIALIZED
सेDESTROYED
में ले जाने की कोशिश करने पर, अब हमेशाIllegalStateException
दिखेगा. भले ही,Lifecycle
में कोई अटैच किए गए ऑब्ज़र्वर हों या न हों. (I7c390, b/177924329)LifecycleRegistry
अबDESTROYED
स्थिति में पहुंचने पर, अपने ऑब्ज़र्वर को हटा देगा. (I4f8dd, b/142925860)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle
औरSavedStateViewModelFactory
को Kotlin में बदल दिया गया है. इससे दोनों क्लास में, जेनेरिक के नल होने की स्थिति बेहतर हुई है. (Ib6ce2, b/216168263, I9647a, b/177667711)LiveData
switchMap
फ़ंक्शन पैरामीटर का आउटपुट अब शून्य हो सकता है. (I40396, b/132923666)LiveData
-ktx एक्सटेंशन को अब@CheckResult
के साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि इन फ़ंक्शन को कॉल करते समय, नतीजे का इस्तेमाल किया जाए. (Ia0f05, b/207325134)
व्यवहार में बदलाव
SavedStateHandle
अब defaultValue को सही तरीके से सेव करता है. ऐसा तब होता है, जब दी गई कुंजी के लिए कोई वैल्यू मौजूद न हो. (I1c6ce, b/178510877)
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.4.1
:lifecycle-process
को अपडेट किया गया है, ताकि यह Startup 1.1.1 पर निर्भर रहे. इससे यह पक्का किया जा सकेगा किProcessLifecycleInitializer
कोStartupException
से रोकने वाले फ़िक्स डिफ़ॉल्ट रूप से उपलब्ध हों. (Ib01df, b/216490724) - अब कस्टम
AndroidViewModel
क्लास में पैरामीटर गलत क्रम में होने पर, गड़बड़ी का बेहतर मैसेज दिखता है. साथ ही,ViewModel
बनाने की कोशिश करने पर भी गड़बड़ी का बेहतर मैसेज दिखता है. (I340f7, b/177667711) - अब
AndroidViewModelFactory
का इस्तेमाल करके,CreationExtras
के ज़रिए व्यू मॉडल बनाया जा सकता है. इसके लिए, ऐप्लिकेशन सेट करने की ज़रूरत नहीं है. (I6ebef, b/217271656)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
ViewModel CreationExtras
इस रिलीज़ के साथ, हम ViewModel
को बनाने के तरीके में बदलाव करने की तैयारी कर रहे हैं. ViewModelProvider.Factory
की सबक्लास के एक तय सेट के बजाय, हम स्टेटलेस फ़ैक्ट्रियों की दुनिया में जा रहे हैं. ये फ़ैक्ट्रियां, CreationExtras
नाम के नए कॉन्सेप्ट पर निर्भर करती हैं. हर सबक्लास, अतिरिक्त फ़ंक्शन जोड़ती है. जैसे, AndroidViewModelFactory
के ज़रिए Application
कंस्ट्रक्टर पैरामीटर की अनुमति देना, SavedStateViewModelFactory
और AbstractSavedStateViewModelFactory
के ज़रिए SavedStateHandle
कंस्ट्रक्टर पैरामीटर की अनुमति देना वगैरह. (Ia7343, b/188691010, b/188541057)
इस बदलाव के बाद, ViewModelProvider
अब ViewModelProvider.Factory
के पिछले create(Class<T>)
तरीके का इस्तेमाल करके सीधे कॉल नहीं करेगा. इसके बजाय, यह create
के नए ओवरलोड को कॉल करता है: create(Class<T>, CreationExtras)
. इसका मतलब है कि ViewModelProvider.Factory
के किसी भी इंस्टेंस को अब इन सभी नए CreationExtras
का ऐक्सेस मिल गया है:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: यहString
, उस कस्टम पासकोड को ऐक्सेस करने की सुविधा देता है जिसे आपनेViewModelProvider.get()
को पास किया था.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
,Application
क्लास का ऐक्सेस देता है.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
, उसSavedStateRegistryOwner
का ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
, उसViewModelStoreOwner
का ऐक्सेस देता है जिसका इस्तेमाल इस ViewModel को बनाने के लिए किया जा रहा है.SavedStateHandleSupport.DEFAULT_ARGS_KEY
, उन आर्ग्युमेंट केBundle
का ऐक्सेस देता है जिनका इस्तेमालSavedStateHandle
बनाने के लिए किया जाना चाहिए.
गतिविधि 1.5.0-alpha01
, फ़्रैगमेंट 1.5.0-alpha01
, और नेविगेशन 2.5.0-alpha01
का इस्तेमाल करते समय, ये एक्स्ट्रा डिफ़ॉल्ट रूप से उपलब्ध होते हैं. अगर उन लाइब्रेरी के पुराने वर्शन का इस्तेमाल किया जाता है, तो आपका CreationExtras
खाली होगा. ViewModelProvider.Factory
के सभी मौजूदा सबक्लास को फिर से लिखा गया है, ताकि वे लाइब्रेरी के पुराने वर्शन में इस्तेमाल किए गए लेगसी क्रिएशन पाथ और CreationExtras
पाथ, दोनों के साथ काम कर सकें. CreationExtras
पाथ का इस्तेमाल आने वाले समय में किया जाएगा.
इन CreationExtras
की मदद से, एक ऐसा ViewModelProvider.Factory
बनाया जा सकता है जो हर ViewModel
को सिर्फ़ ज़रूरी जानकारी देता है. इसके लिए, Factory सबक्लास की सख्त हैरारकी पर भरोसा करने की ज़रूरत नहीं होती:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
हम SavedStateHandleSupport
से CreationExtras
पर createSavedStateHandle()
Kotlin एक्सटेंशन फ़ंक्शन का इस्तेमाल करते हैं, ताकि सिर्फ़ उस ViewModel के लिए SavedStateHandle
बनाया जा सके जिसे इसकी ज़रूरत है. (Ia6654, b/188541057)
कस्टम CreationExtras
, ComponentActivity
या Fragment
में getDefaultViewModelCreationExtras()
को बदलकर दिया जा सकता है. इससे, ये कस्टम ViewModelProvider.Factory
के लिए उपलब्ध हो जाते हैं. इन्हें असिस्टेड इंजेक्शन के बिल्ट-इन फ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है. इन एक्स्ट्रा को सीधे तौर पर ViewModelProvider
के साथ इस्तेमाल करने पर, ये आपके कस्टम फ़ैक्ट्री के लिए अपने-आप उपलब्ध हो जाएंगे. इसके अलावा, by viewModels()
और by activityViewModels()
Kotlin प्रॉपर्टी एक्सटेंशन का इस्तेमाल करने पर भी ये उपलब्ध हो जाएंगे. (I79f2b, b/207012584, b/207012585, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने और फिर से शुरू होने के बाद,
SavedStateHandle
को दी गई डिफ़ॉल्ट वैल्यू फिर से दिखने लगती थी. भले ही, उसेSavedStateHandle
से हटा दिया गया हो. इस वजह से,SavedStateHandle
अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b)
वर्शन 2.4
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.lifecycle:lifecycle-*:2.4.1
रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइफ़साइकल
2.5.0-alpha01
से बैकपोर्ट किया गया: इस समस्या को ठीक किया गया है. इसमेंSavedStateHandle
को दी गई डिफ़ॉल्ट वैल्यू, प्रोसेस के बंद होने और फिर से शुरू होने के बाद फिर से दिखने लगती थी. भले ही, इसेSavedStateHandle
से हटा दिया गया हो. इस वजह से,SavedStateHandle
अब डिफ़ॉल्ट वैल्यू और वापस लाई गई वैल्यू को एक साथ मर्ज नहीं करेगा. इसके बजाय, सिर्फ़ वापस लाई गई वैल्यू को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करेगा. (I53a4b) lifecycle-process
अब Androidx Startup 1.1.1 पर निर्भर करता है. इसमें एक रिग्रेशन को ठीक किया गया है. इस रिग्रेशन में,ProcessLifecycleInitializer
का इस्तेमाल करने परStartupException
होता था. (b/216490724)
वर्शन 2.4.0
27 अक्टूबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0
रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.
2.3.0 के बाद हुए अहम बदलाव
@OnLifecycleEvent
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserver
याDefaultLifecycleObserver
का इस्तेमाल किया जाना चाहिए.androidx.lifecycle:lifecycle-viewmodel-compose
लाइब्रेरी को जोड़ा गया. यहviewModel()
कंपोज़ेबल औरLocalViewModelStoreOwner
उपलब्ध कराता है.- सोर्स के साथ काम न करने वाला बदलाव:
ViewModelProvider
को Kotlin में फिर से लिखा गया है.ViewModelProvider.Factory.create
तरीके में अब नल वैल्यू वाले सामान्य टाइप की अनुमति नहीं है.
- सोर्स के साथ काम न करने वाला बदलाव:
androidx.lifecycle:lifecycle-runtime-ktx
में नए कोरूटीन एपीआई जोड़े गए हैं:Lifecycle.repeatOnLifecycle
, एपीआई है. यह एपीआई, लाइफ़साइकल के किसी खास स्थिति में होने पर, को-रूटीन में कोड के ब्लॉक को एक्ज़ीक्यूट करता है. लाइफ़साइकल के टारगेट स्टेट में आने और उससे बाहर जाने पर, ब्लॉक रद्द हो जाएगा और फिर से लॉन्च हो जाएगा;Flow.flowWithLifecycle
, यह एक ऐसा एपीआई है जो लाइफ़साइकल के किसी खास स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.DefaultLifecycleObserver
कोlifecycle.lifecycle-common-java8
सेlifecycle.lifecycle-common
में ले जाया गया.lifecycle.lifecycle-common-java8
,lifecycle.lifecycle-common
के अलावा कोई और सुविधा नहीं देता. इसलिए, इस पर निर्भरता कोlifecycle.lifecycle-common
से बदला जा सकता है.lifecycle-viewmodel-ktx
से नॉन कोरूटीन एपीआई कोlifecycle-viewmodel
मॉड्यूल में ले जाया गया है.lifecycle-process
अबProcessLifecycleOwner
को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializer
करता था.अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तो प्रोसेस लाइफ़साइकल को शुरू करने के लिएContentProvider
का इस्तेमाल किया जा रहा है. ऐसे में, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
वर्शन 2.4.0-rc01
29 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
को Lifecycle 2.4.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.4.0-beta01
15 सितंबर, 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@OnLifecycleEvent
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,LifecycleEventObserver
याDefaultLifecycleObserver
का इस्तेमाल किया जाना चाहिए. (I5a8fa)- DefaultLifecycleObserver को
androidx.lifecycle.lifecycle-common-java8
सेandroidx.lifecycle.lifecycle-common
में ले जाया गया.androidx.lifecycle.lifecycle-common-java8
,androidx.lifecycle.lifecycle-common
के अलावा कोई और सुविधा नहीं देता है. इसलिए, इस पर निर्भरता कोandroidx.lifecycle.lifecycle-common
से बदला जा सकता है. (I021aa) lifecycle-viewmodel-ktx
के नॉन कोरूटीन एपीआई कोlifecycle-viewmodel
मॉड्यूल में ले जाया गया है. (I6d5b2)
बाहरी योगदान
वर्शन 2.4.0-alpha03
4 अगस्त, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सोर्स के साथ काम न करने वाला बदलाव: ViewModelProvider को Kotlin में फिर से लागू किया गया है.
ViewModelProvider.Factory.create
मेथड में अब नल वैल्यू वाले सामान्य टाइप इस्तेमाल नहीं किए जा सकते. (I9b9f6)
व्यवहार में बदलाव
Lifecycle.repeatOnLifecycle
:block
को अब बार-बार लागू करने पर, हमेशा क्रम से लागू किया जाता है. (Ibab33)
बाहरी योगदान
repeatOnLifecycle
दस्तावेज़ में कोड स्निपेट ठीक करने के लिए, chao2zhang का धन्यवाद. #205.
वर्शन 2.4.0-alpha02
16 जून, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
lifecycle-runtime-ktx
में नयाRepeatOnLifecycleWrongUsage
लिंट चेक जोड़ा गया है. इससे यह पता चलता है किonStart()
याonResume()
मेंrepeateOnLifecycle
का गलत तरीके से इस्तेमाल कब किया गया है. (706078, b/187887400)
एपीआई में हुए बदलाव
LifecycleOwner.addRepeatingJob
एपीआई को हटा दिया गया है. इसकी जगहLifecycle.repeatOnLifecycle
का इस्तेमाल किया जा सकता है. यह स्ट्रक्चर्ड कंकरेंसी का पालन करता है और इसके बारे में तर्क देना आसान है. (I4a3a8)ProcessLifecycleInitializer
को सार्वजनिक बनाएं, ताकि अन्यandroidx.startup.Initializer
इन्हें डिपेंडेंसी के तौर पर इस्तेमाल कर सकें. (I94c31)
गड़बड़ियां ठीक की गईं
- जब फ़ील्ड में मॉडिफ़ायर होते हैं, तब
NullSafeMutableLiveData
लिंट चेक से जुड़ी समस्या को ठीक किया गया है. (#147, b/183696616) - जेनेरिक का इस्तेमाल करते समय,
NullSafeMutableLiveData
लिंट चेक से जुड़ी एक और समस्या ठीक की गई. (#161, b/184830263)
बाहरी योगदान
NullSafeMutableLiveData
लिंट चेक को बेहतर बनाने के लिए, maxsav को धन्यवाद. (#147, b/183696616)NullSafeMutableLiveData
लिंट चेक को बेहतर बनाने के लिए, kozaxinan को धन्यवाद. (#161, b/184830263)
वर्शन 2.4.0-alpha01
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
lifecycle-process
अबProcessLifecycleOwner
को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है.पहले, यह काम
androidx.lifecycle.ProcessLifecycleOwnerInitializer
करता था.अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तो प्रोसेस लाइफ़साइकल को शुरू करने के लिएContentProvider
का इस्तेमाल किया जा रहा है. ऐसे में, आपको यह तरीका अपनाना होगा.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(या)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
एपीआई में हुए बदलाव
Flow.flowWithLifecycle
एपीआई जोड़ा गया है. यहFlow.flowWithLifecycle
एपीआई का इस्तेमाल करके, लाइफ़साइकल के कम से कम एक तय स्थिति में होने पर, अपस्ट्रीम फ़्लो से वैल्यू जनरेट करता है.Lifecycle.repeatOnLifecycle
यहLifecycleOwner.addRepeatinJob
एपीआई का विकल्प है. (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 में ये बदलाव शामिल हैं.
इसे Compose के 1.0.0-beta08
वर्शन के साथ काम करने के लिए अपडेट किया गया है.
वर्शन 1.0.0-alpha05
18 मई, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- इसे Compose के
1.0.0-beta07
वर्शन के साथ काम करने के लिए अपडेट किया गया है.
गड़बड़ियां ठीक की गईं
- ui-test-manifest और ui-tooling-data की AndroidManifest फ़ाइलें अब Android 12 के साथ काम करती हैं (I6f9de, b/184718994)
वर्शन 1.0.0-alpha04
7 अप्रैल, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- इस वर्शन की मदद से,
androidx.hilt:hilt-navigation-compose
औरandroidx.navigation:navigation-compose
,androidx.compose.compiler:compiler:1.0.0-beta04
औरandroidx.compose.runtime:runtime:1.0.0-beta04
पर निर्भरता सिंक कर सकते हैं. 1.0.0 के लिए, कंपाइलर और रनटाइम का एक जैसा होना ज़रूरी है.
वर्शन 1.0.0-alpha03
10 मार्च, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner.current
अब एक शून्य हो सकने वालाViewModelStoreOwner
दिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि मौजूदा कंपोज़िशन मेंViewModelStoreOwner
उपलब्ध है या नहीं. जिन एपीआई के लिएViewModelStoreOwner
की ज़रूरत होती है वे अब भी अपवाद दिखाते हैं. जैसे,viewModel()
औरNavHost
. ऐसा तब होता है, जबViewModelStoreOwner
सेट नहीं किया जाता. (Idf39a)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha02
24 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner
में अबprovides
फ़ंक्शन उपलब्ध हैं. इनका इस्तेमालCompositionLocalProvider
के साथ किया जा सकता है. येasProvidableCompositionLocal()
एपीआई की जगह काम करते हैं. (I45d24)
Lifecycle-Viewmodel-Compose वर्शन 1.0.0-alpha01
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
viewModel()
कंपोज़ेबल औरLocalViewModelStoreOwner
कोandroidx.compose.ui.viewinterop
सेandroidx.lifecycle.viewmodel.compose
पैकेज में मौजूद इस आर्टफ़ैक्ट में ले जाया गया. (I7a374)
वर्शन 2.3.1
लाइफ़साइकल वर्शन 2.3.1
24 मार्च, 2021
androidx.lifecycle:lifecycle-*:2.3.1
रिलीज़ हो गया है. वर्शन 2.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट नियम अब अलग-अलग नल वैल्यू वाले फ़ील्ड वैरिएबल के बीच सही तरीके से अंतर कर सकता है. (b/169249668)
वर्शन 2.3.0
वर्शन 2.3.0
10 फ़रवरी, 2021
androidx.lifecycle:lifecycle-*:2.3.0
रिलीज़ हो गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.
2.2.0 के बाद के मुख्य बदलाव
SavedStateHandle
में पार्सल न किए जा सकने वाले क्लास के लिए सहायता उपलब्ध है:SavedStateHandle
अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इससे आपको किसी दी गई कुंजी के लिएsetSavedStateProvider()
को कॉल करने की सुविधा मिलती है. साथ ही,SavedStateProvider
उपलब्ध कराने की सुविधा मिलती है. जबSavedStateHandle
से उसकी स्थिति सेव करने के लिए कहा जाता है, तबSavedStateProvider
कोsaveState()
पर वापस कॉल किया जाएगा. पार्सल नहीं की जा सकने वाली क्लास सेव करना लेख पढ़ें.- लाइफ़साइकल के हिसाब से व्यवहार से जुड़ी नीति का उल्लंघन होने पर कार्रवाई करना:
- LifecycleRegistry अब
DESTROYED
को टर्मिनल स्थिति के तौर पर लागू करता है. LifecycleRegistry
अब यह पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह हमेशा से ही, ऐक्टिविटी, फ़्रैगमेंट वगैरह की लाइफ़साइकल के लिए ज़रूरी होता था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश का पता लगाना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके जांचों से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड से इसLifecycleRegistry
को ऐक्सेस करने पर, सही तरीके से सिंक्रनाइज़ेशन हो.
- LifecycleRegistry अब
- लाइफ़साइकल की स्थिति और इवेंट हेल्पर:
Lifecycle.Event
मेंdownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
के स्टैटिक हेल्पर तरीके जोड़े गए हैं, ताकिState
और ट्रांज़िशन की दिशा के हिसाब सेEvent
जनरेट किया जा सके.getTargetState()
मेथड जोड़ा गया है. यहState
उपलब्ध कराता है, जिसमें लाइफ़साइकलEvent
के बाद सीधे तौर पर ट्रांज़िशन करेगा. withStateAtLeast
:Lifecycle.withStateAtLeast
एपीआई जोड़े गए हैं. ये एपीआई, लाइफ़साइकल की स्थिति का इंतज़ार करते हैं और स्थिति में बदलाव होने पर, कोड के ऐसे ब्लॉक को सिंक्रोनस तरीके से चलाते हैं जो सस्पेंड नहीं होता. इसके बाद, नतीजे के साथ फिर से शुरू होते हैं. ये एपीआई, मौजूदाwhen*
तरीकों से अलग हैं. ऐसा इसलिए है, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते हैं और कस्टम डिस्पैचर का इस्तेमाल नहीं करते हैं. (aosp/1326081)ViewTree
एपीआई: नएViewTreeLifecycleOwner.get(View)
औरViewTreeViewModelStoreOwner.get(View)
एपीआई की मदद से,View
इंस्टेंस में मौजूदLifecycleOwner
औरViewModelStoreOwner
को वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको Activity1.2.0
और Fragment1.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)
बाहरी योगदान
- लाइफ़साइकल के बारे में जानकारी रखने वाली को-रूटीन को निलंबित करने वाले एपीआई अब
yield()
को बेहतर तरीके से हैंडल करते हैं. धन्यवाद, निकलास ऐंसमन गिएर्ट्ज़! (aosp/1430830, b/168777346)
वर्शन 2.3.0-beta01
1 अक्टूबर, 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- लैंबडा सिंटैक्स का इस्तेमाल करने के लिए ज़रूरी
LiveData.observe()
Kotlin एक्सटेंशन अब इस्तेमाल नहीं किया जाता, क्योंकि Kotlin 1.4 का इस्तेमाल करते समय इसकी ज़रूरत नहीं होती. (I40d3f)
गड़बड़ियां ठीक की गईं
- Kotlin 1.4 का इस्तेमाल करने के लिए, androidx को अपग्रेड करें (Id6471, b/165307851, b/165300826)
दस्तावेज़ में बदलाव
liveData
बिल्डर औरasLiveData()
दस्तावेज़ों को अपडेट किया गया है, ताकि दिए गए टाइमआउट की वैल्यू बदलने के बारे में जानकारी शामिल की जा सके. (aosp/1122324)
वर्शन 2.3.0-alpha07
19 अगस्त, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
रिलीज़ हो गया है. वर्शन 2.3.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
Lint check में क्रैश होने की समस्या को ठीक किया गया है. (aosp/1395367)
वर्शन 2.3.0-alpha06
22 जुलाई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
रिलीज़ हो गया है. वर्शन 2.3.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
State
और ट्रांज़िशन की दिशा के हिसाब सेEvent
जनरेट करने के लिए,Lifecycle.Event
मेंdownFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
के स्टैटिक हेल्पर तरीके जोड़े गए.getTargetState()
मेथड जोड़ा गया है. यहState
उपलब्ध कराता है, जिसमें लाइफ़साइकलEvent
के बाद सीधे तौर पर ट्रांज़िशन करेगा. (I00887)- ऐसे
Lifecycle.withStateAtLeast
एपीआई जोड़े गए हैं जो लाइफ़साइकल की स्थिति का इंतज़ार करते हैं. इसके बाद, स्थिति में बदलाव होने पर, कोड के नॉन-सस्पेंडिंग ब्लॉक को सिंक्रोनस तरीके से चलाते हैं. इसके बाद, नतीजे के साथ फिर से शुरू होते हैं. ये एपीआई, मौजूदाwhen*
तरीकों से अलग हैं. ऐसा इसलिए है, क्योंकि ये निलंबित करने वाले कोड को चलाने की अनुमति नहीं देते हैं और कस्टम डिस्पैचर का इस्तेमाल नहीं करते हैं. (aosp/1326081)
व्यवहार में बदलाव
- LifecycleRegistry अब
DESTROYED
को टर्मिनल स्थिति के तौर पर लागू करता है. (I00887) LifecycleRegistry
अब यह पुष्टि करता है कि इसके तरीकों को मुख्य थ्रेड पर कॉल किया गया है. यह हमेशा से ही, ऐक्टिविटी, फ़्रैगमेंट वगैरह की लाइफ़साइकल के लिए ज़रूरी होता था. मुख्य थ्रेड के अलावा अन्य थ्रेड से ऑब्ज़र्वर जोड़ने पर, रनटाइम में क्रैश का पता लगाना मुश्किल हो जाता था. आपके कॉम्पोनेंट के मालिकाना हक वालेLifecycleRegistry
ऑब्जेक्ट के लिए,LifecycleRegistry.createUnsafe(...)
का इस्तेमाल करके जांचों से ऑप्ट आउट किया जा सकता है. हालांकि, इसके बाद आपको यह पक्का करना होगा कि अलग-अलग थ्रेड से इसLifecycleRegistry
को ऐक्सेस करते समय, सही सिंक्रनाइज़ेशन हो (Ie7280, b/137392809)
गड़बड़ियां ठीक की गईं
NullSafeMutableLiveData
में क्रैश होने की समस्या को ठीक किया गया है. (b/159987480)lifecycle-livedata-core-ktx
के साथ बंडल किए गए Lint चेक के लिए,ObsoleteLintCustomCheck
को ठीक किया गया. खास तौर पर,NullSafeMutableLiveData
के लिए. (b/158699265)
वर्शन 2.3.0-alpha05
24 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LiveData
अब रीएंट्रेंट मामलों को बेहतर तरीके से हैंडल करता है. इससेonActive()
याonInactive()
को डुप्लीकेट कॉल करने से बचा जा सकता है. (b/157840298)- उस समस्या को ठीक किया गया है जिसमें Android Studio 4.1 Canary 6 या इसके बाद के वर्शन का इस्तेमाल करने पर, लिंट चेक नहीं चलते थे. (aosp/1331903)
वर्शन 2.3.0-alpha04
10 जून, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NonNullableMutableLiveData
लिंट चेक में क्रैश होने की समस्या ठीक की गई. (b/157294666)NonNullableMutableLiveData
लिंट चेक की सुविधा अब उन मामलों को भी कवर करती है जहांMutableLiveData
परnull
वैल्यू सेट की गई थी. साथ ही, इसमें नॉन-नल टाइप पैरामीटर भी शामिल है. (b/156002218)
वर्शन 2.3.0-alpha03
20 मई, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
रिलीज़ हो गए हैं. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
SavedStateHandle
अब लेज़ी सीरियलाइज़ेशन के साथ काम करता है. इसके लिए, आपको किसी दी गई कुंजी के लिएsetSavedStateProvider()
को कॉल करने की अनुमति मिलती है. साथ ही,SavedStateProvider
उपलब्ध कराने की अनुमति मिलती है. जबSavedStateHandle
से उसकी स्थिति को सेव करने के लिए कहा जाता है, तबSavedStateProvider
कोsaveState()
पर कॉलबैक मिलता है. (b/155106862)- नए
ViewTreeViewModelStoreOwner.get(View)
एपीआई की मदद से,View
इंस्टेंस के लिएViewModelStoreOwner
को वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
, और AppCompat1.3.0-alpha01
पर अपग्रेड करना होगा.lifecycle-viewmodel-ktx
मेंfindViewModelStoreOwner()
Kotlin एक्सटेंशन जोड़ा गया है. (aosp/1295522)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
MutableLiveData
लाइफ़साइकल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
पास करने की अनुमति देता है. इससे उन मामलों में बेहतर तरीके से मदद मिलती है जहांApplication
तुरंत उपलब्ध नहीं होता है औरAndroidViewModel
के लिए सहायता की ज़रूरत नहीं होती है. (aosp/1285740)
गड़बड़ियां ठीक की गईं
- एपीआई 28 और इससे कम वर्शन वाले डिवाइसों पर क्लास की पुष्टि न होने की समस्या को ठीक करके, कोल्ड स्टार्ट की परफ़ॉर्मेंस को बेहतर बनाया गया है. (aosp/1282118)
वर्शन 2.3.0-alpha01
4 मार्च, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
रिलीज़ हो गया है. वर्शन 2.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नए
ViewTreeLifecycleOwner.get(View)
एपीआई की मदद से,View
इंस्टेंस के लिएLifecycleOwner
को वापस पाया जा सकता है. इस जानकारी को सही तरीके से भरने के लिए, आपको गतिविधि1.2.0-alpha01
और फ़्रैगमेंट1.3.0-alpha01
को अपग्रेड करना होगा.lifecycle-runtime-ktx
मेंfindViewTreeLifecycleOwner
Kotlin एक्सटेंशन उपलब्ध है. (aosp/1182361, aosp/1182956) - नया Lint चेक जोड़ा गया है. यह आपको तब चेतावनी देता है, जब आपने Kotlin में नॉन-नल के तौर पर तय किए गए
MutableLiveData
परnull
वैल्यू सेट की हो. यह सुविधा,livedata-core-ktx
याlivedata-ktx
आर्टफ़ैक्ट का इस्तेमाल करने पर उपलब्ध होती है. (aosp/1154723, aosp/1159092) lifecycle-runtime-testing
का नया आर्टफ़ैक्ट उपलब्ध है. यहTestLifecycleOwner
उपलब्ध कराता है, जोLifecycleOwner
लागू करता है. साथ ही, थ्रेड सेफ़ म्यूटबलLifecycle
उपलब्ध कराता है. (aosp/1242438)
गड़बड़ियां ठीक की गईं
lifecycle-runtime
आर्टफ़ैक्ट का पैकेज नाम अब यूनीक है. (aosp/1187196)
वर्शन 2.2.0
ViewModel-Savedstate वर्शन 2.2.0
5 फ़रवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
Lifecycle ViewModel SavedState अब अन्य Lifecycle आर्टफ़ैक्ट के साथ एक ही वर्शन शेयर करता है. 2.2.0
का व्यवहार, 1.0.0
के व्यवहार जैसा ही होता है.
वर्शन 2.2.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-*:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
2.1.0 के बाद हुए अहम बदलाव
- लाइफ़साइकल कोरूटीन इंटिग्रेशन: नया
lifecycle-runtime-ktx
आर्टफ़ैक्ट, लाइफ़साइकल और Kotlin कोरूटीन के बीच इंटिग्रेशन जोड़ता है. कोरूटीन का फ़ायदा पाने के लिए,lifecycle-livedata-ktx
को भी बढ़ाया गया है. ज़्यादा जानकारी के लिए, आर्किटेक्चर कॉम्पोनेंट के साथ Kotlin कोरूटीन इस्तेमाल करना लेख पढ़ें. ViewModelProviders.of()
का इस्तेमाल अब नहीं किया जा सकता:ViewModelProviders.of()
का इस्तेमाल अब नहीं किया जा सकता. Fragment1.2.0
का इस्तेमाल करते समय, नईViewModelProvider(ViewModelStoreOwner)
कंस्ट्रक्टर कोFragment
याFragmentActivity
पास करके, वही फ़ंक्शनैलिटी हासिल की जा सकती है.lifecycle-extensions
आर्टफ़ैक्ट का इस्तेमाल बंद होना:ViewModelProviders.of()
के इस्तेमाल बंद होने के साथ-साथ, इस रिलीज़ मेंlifecycle-extensions
के आखिरी एपीआई का इस्तेमाल भी बंद हो जाएगा. इसलिए, अब इस आर्टफ़ैक्ट को पूरी तरह से इस्तेमाल बंद कर दिया जाना चाहिए. हमारा सुझाव है कि आपlifecycle-extensions
के बजाय, अपनी ज़रूरत के हिसाब से लाइफ़साइकल आर्टफ़ैक्ट (जैसे,LifecycleService
का इस्तेमाल करने परlifecycle-service
औरProcessLifecycleOwner
का इस्तेमाल करने परlifecycle-process
) का इस्तेमाल करें. ऐसा इसलिए, क्योंकि आने वाले समय मेंlifecycle-extensions
का2.3.0
वर्शन रिलीज़ नहीं किया जाएगा.- Gradle Incremental Annotation Processor: Lifecycle का एनोटेशन प्रोसेसर, डिफ़ॉल्ट रूप से इंक्रीमेंटल होता है.
अगर आपका ऐप्लिकेशन Java 8 प्रोग्रामिंग लैंग्वेज में लिखा गया है, तो
DefautLifecycleObserver
का इस्तेमाल किया जा सकता है. वहीं, अगर इसे Java 7 प्रोग्रामिंग लैंग्वेज में लिखा गया है, तोLifecycleEventObserver
का इस्तेमाल किया जा सकता है.
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
रिलीज़ हो गया है. वर्शन 2.2.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
ViewModel
कोViewModelStore
में सेव करने और बाद में डिफ़ॉल्ट फ़ैक्ट्री के साथ क्वेरी करने पर होने वाली गड़बड़ी को ठीक किया गया.Dispatchers.Main.immediate
के इस्तेमाल को ठीक किया गया है, ताकिDispatchers.Main.immediate
और इसी तरह के अन्य तरीकों को लाइफ़साइकल के इवेंट के दौरान सिंक्रोनस तरीके से कॉल किया जा सके.launchWhenCreated
(aosp/1156203)
बाहरी योगदान
- बग ठीक करने में योगदान देने के लिए, एंडर्स जर्लबर्ग को धन्यवाद! (aosp/1156203)
- हम Jetbrains के Vsevolod Tolstopyatov को धन्यवाद देते हैं. उन्होंने इनलाइन एक्ज़ीक्यूशन को लागू करने की समीक्षा की.
डिपेंडेंसी में बदलाव
- Lifecycle Extensions अब Fragment
1.2.0-rc03
पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
रिलीज़ हो गया है. वर्शन 2.2.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लाइब्रेरी के ProGuard सेटअप में मौजूद एक बग को ठीक किया गया है. इससे एपीआई 28 या इसके बाद के वर्शन वाले डिवाइसों पर असर पड़ता था. ऐसा तब होता था, जब टारगेट एपीआई 29 से पहले का होता था. (b/142778206)
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
रिलीज़ हो गया है. वर्शन 2.2.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
launchWhenCreated
और इससे जुड़े तरीकों को, लाइफ़साइकल के तरीके से एक फ़्रेम बाद में चलाने की समस्या को ठीक किया गया है. ऐसा इसलिए होता था, क्योंकिDispatchers.Main.immediate
के बजायDispatchers.Main
का इस्तेमाल किया जाता था. (aosp/1145596)
बाहरी योगदान
- इस समस्या को ठीक करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1145596)
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
रिलीज़ हो गया है. वर्शन 2.2.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android 10 डिवाइसों पर,
ProcessLifecycleOwner
के क्रम में और गतिविधि केLifecycleOwner
को शुरू और फिर से शुरू करने में, Lifecycle 2.2.0-alpha05 में हुई गड़बड़ी को ठीक किया गया है. (aosp/1128132) - Lifecycle
2.2.0-alpha05
में हुई एक रिग्रेशन समस्या को ठीक किया गया है. इसकी वजह से,lifecycle-process
के2.0.0
या2.1.0
वर्शन का इस्तेमाल करते समयNullPointerException
की समस्या होती थी. (b/141536990)
वर्शन 2.2.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
रिलीज़ हो गया है. वर्शन 2.2.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- कोरूटीन लाइवडेटा बिल्डर में रेस कंडीशन की समस्या ठीक की गई. b/140249349
वर्शन 2.2.0-alpha04
5 सितंबर, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
, औरliveData
के लिए, अबDispatchers.Main
के बजायDispatchers.Main.immediate
का इस्तेमाल किया जाता है. (b/139740492)
बाहरी योगदान
Dispatchers.Main.immediate
पर माइग्रेट करने में योगदान देने के लिए, निकलास ऐंसमन को धन्यवाद! (aosp/1106073)
वर्शन 2.2.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
ViewModelStoreOwner
को लागू करने वाले लोग या कंपनियां, अब डिफ़ॉल्टViewModelProvider.Factory
देने के लिए,HasDefaultViewModelProviderFactory
को लागू कर सकती हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. यह ऐक्टिविटी1.1.0-alpha02
, फ़्रैगमेंट1.2.0-alpha02
, और नेविगेशन2.2.0-alpha01
के लिए किया गया है. (aosp/1092370, b/135716331)
एपीआई में हुए बदलाव
ViewModelProviders.of()
का अब इस्तेमाल नहीं किया जा सकता. एक ही फ़ंक्शन को लागू करने के लिए, नएViewModelProvider(ViewModelStoreOwner)
कंस्ट्रक्टर कोFragment
याFragmentActivity
पास किया जा सकता है. (aosp/1009889)
वर्शन 2.2.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:*:2.2.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
LiveDataScope.initialValue
कोLiveDataScope.latestValue
से बदल दिया गया है. यहliveData
ब्लॉक की मौजूदा वैल्यू को ट्रैक करेगा.liveData
बिल्डर में एक नया ओवरलोड जोड़ा गया है, जोtimeout
पैरामीटर कोDuration
टाइप के तौर पर स्वीकार करता है
वर्शन 2.2.0-alpha01
7 मई, 2019
androidx.lifecycle:*:2.2.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- इस रिलीज़ में नई सुविधाएं जोड़ी गई हैं. इनमें Lifecycle और LiveData के लिए Kotlin coroutines का इस्तेमाल करने की सुविधा शामिल है. इनके बारे में ज़्यादा जानकारी वाले दस्तावेज़ यहां देखे जा सकते हैं.
ViewModel-SavedState वर्शन 1.0.0
वर्शन 1.0.0
22 जनवरी, 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन में मौजूद मुख्य सुविधाएं
- नई SavedStateHandle क्लास जोड़ी गई. इससे आपकी
ViewModel
क्लास, सेव किए गए स्टेटस को ऐक्सेस कर सकती हैं और उसमें योगदान दे सकती हैं. इस ऑब्जेक्ट कोViewModel
क्लास के कंस्ट्रक्टर में पाया जा सकता है. साथ ही, Fragments और AppCompatActivity की ओर से डिफ़ॉल्ट रूप से उपलब्ध कराई गई फ़ैक्ट्रियां,SavedStateHandle
को अपने-आप इंजेक्ट कर देंगी. - AbstractSavedStateViewModelFactory को जोड़ा गया. इसकी मदद से, अपने
ViewModel
के लिए कस्टम फ़ैक्ट्रियां बनाई जा सकती हैं. साथ ही, उन्हेंSavedStateHandle
का ऐक्सेस दिया जा सकता है.
ViewModel-Savedstate वर्शन 1.0.0-rc03
4 दिसंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
रिलीज़ हो गया है. वर्शन 1.0.0-rc03 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- Lifecycle ViewModel SavedState अब Lifecycle
2.2.0-rc03
पर निर्भर करता है.
Viewmodel-Savedstate वर्शन 1.0.0-rc02
7 नवंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- अब लाइफ़साइकल
2.2.0-rc02
पर निर्भर करता है.
ViewModel-SavedState वर्शन 1.0.0-rc01
23 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
को 1.0.0-beta01
के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
ViewModel-Savedstate वर्शन 1.0.0-beta01
9 अक्टूबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से
Activity.onActivityResult()
में पहली बार SavedState ViewModel को ऐक्सेस करने पर,IllegalStateException
मिलता था. (b/139093676) AbstractSavedStateViewModelFactory
का इस्तेमाल करते समय,IllegalStateException
से जुड़ी समस्या को ठीक किया गया है. (b/141225984)
ViewModel-SavedState वर्शन 1.0.0-alpha05
18 सितंबर, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateViewModelFactory
अबAbstractSavedStateViewModelFactory
को एक्सटेंड नहीं करता है. साथ ही,SavedStateHandle
सिर्फ़ उन ViewModels के लिए बनाया जाता है जिन्होंने इसके लिए अनुरोध किया है (aosp/1113593)
ViewModel-SavedState वर्शन 1.0.0-alpha03
7 अगस्त, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नुकसान पहुंचा सकने वाले बदलाव
lifecycle-viewmodel-savedstate
अबfragment
पर निर्भर नहीं है. साथ ही, इससे जुड़ेSavedStateViewModelFactory(Fragment)
औरSavedStateViewModelFactory(FragmentActivity)
कंस्ट्रक्टर हटा दिए गए हैं. इसके बजाय, अबSavedStateViewModelFactory
, ऐक्टिविटी1.1.0-alpha02
, फ़्रैगमेंट1.2.0-alpha02
, और नेविगेशन2.2.0-alpha01
के लिए डिफ़ॉल्ट फ़ैक्ट्री है. (b/135716331)
ViewModel-SavedState वर्शन 1.0.0-alpha02
2 जुलाई, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
SavedStateHandle.getLiveData()
ओवरलोड जोड़ा गया है, जो डिफ़ॉल्ट वैल्यू स्वीकार करता है.
एपीआई में हुए बदलाव
SavedStateVMFactory
का नाम बदलकरSavedStateViewModelFactory
कर दिया गया है.AbstractSavedStateVMFactory
का नाम बदलकरAbstractSavedStateViewModelFactory
कर दिया गया है.
ViewModel-Savedstate वर्शन 1.0.0-alpha01
13 मार्च, 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
रिलीज़ हो गया है. इस शुरुआती रिलीज़ के लिए, पूरा कमिट लॉग यहां देखा जा सकता है.
नई सुविधाएं
- अब
ViewModels
, savedstate में योगदान कर सकता है. इसके लिए, आपको हाल ही में लॉन्च की गई viewmodel की फ़ैक्ट्रीSavedStateVMFactory
का इस्तेमाल करना होगा. साथ ही, आपके ViewModel में एक कंस्ट्रक्टर होना चाहिए, जोSavedStateHandle
object को पैरामीटर के तौर पर स्वीकार करता हो.
वर्शन 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
के अलावा, दूसरा इंटरफ़ेस Kotlinby viewmodels {}
में प्रॉपर्टी डेलिगेशन की नई सुविधाओं के साथ अच्छी तरह से कंपोज़ नहीं हुआ. (aosp/914133)
वर्शन 2.1.0-alpha02
30 जनवरी, 2019
androidx.lifecycle 2.1.0-alpha02
रिलीज़ हो गया है.
एपीआई में हुए बदलाव
LifecycleRegistry
में अबsetCurrentState()
तरीका शामिल है. यह अब इस्तेमाल नहीं किए जा सकने वालेsetState()
तरीके की जगह लेता है. (aosp/880715)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
ViewModelStore
को मिटाने पर मॉकViewModel
इंस्टेंस क्रैश हो जाते थे. b/122273087
वर्शन 2.1.0-alpha01
17 दिसंबर, 2018
androidx.lifecycle 2.1.0-alpha01
रिलीज़ हो गया है.
नई सुविधाएं
- लाइफ़साइकल इवेंट की स्ट्रीम की ज़रूरत होने पर,
LifecycleEventObserver
जोड़ा गया. यह छिपी हुईGenericLifecycleObserver
क्लास के बजाय एक सार्वजनिक एपीआई है. LiveData.observe
औरTransformations.*
तरीकों के लिए, ktx एक्सटेंशन जोड़े गए.Transformations.distinctUntilChanged
तरीका जोड़ा गया. यह एक नयाLiveData
ऑब्जेक्ट बनाता है. यह तब तक कोई वैल्यू नहीं भेजता, जब तक सोर्स LiveData वैल्यू में बदलाव नहीं किया जाता.- ViewModels में कोरूटीन की सुविधा: एक्सटेंशन प्रॉपर्टी
ViewModel.viewModelScope
जोड़ी गई. ViewModelProvider.KeyedFactory
को जोड़ा गया. यह ViewModels के लिए एक फ़ैक्ट्री है, जोcreate
तरीके मेंkey
औरClass
को स्वीकार करती है.
वर्शन 2.0.0
वर्शन 2.0.0
21 सितंबर, 2018
ViewModel में 2.0.0-rc01
से एक बग ठीक करके, Lifecycle 2.0.0
रिलीज़ किया गया है.
गड़बड़ियां ठीक की गईं
- ViewModel के proGuard नियम से जुड़ी समस्या ठीक की गई. इस नियम की वजह से कंस्ट्रक्टर गलत तरीके से हटा दिए जाते थे b/112230489
वर्शन 2.0.0-beta01
2 जुलाई, 2018
गड़बड़ियां ठीक की गईं
- LifecycleObserver के proguard नियम को ठीक किया गया, ताकि सिर्फ़ लागू करने की प्रोसेस को बनाए रखा जा सके, न कि सबइंटरफ़ेस को b/71389427
- ViewModel के लिए ProGuard के नियमों को ठीक किया गया है, ताकि अस्पष्ट बनाने और कम करने की अनुमति दी जा सके
AndroidX से पहले के वर्शन
लाइफ़साइकल के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
वर्शन 1.1.1
21 मार्च, 2018
सिर्फ़ एक छोटा बदलाव किया गया है: android.arch.core.util.Function
को arch:runtime
से arch:common
में ले जाया गया है. इससे, इसे रनटाइम डिपेंडेंसी के बिना इस्तेमाल किया जा सकता है. उदाहरण के लिए, नीचे दिए गए paging:common
में.
lifecycle:common
, lifecycle:runtime
पर निर्भर करता है. इसलिए, इस बदलाव का असर सीधे तौर पर lifecycle:runtime
पर नहीं पड़ता. इसका असर सिर्फ़ उन मॉड्यूल पर पड़ता है जो सीधे तौर पर lifecycle:common
पर निर्भर करते हैं. जैसे, पेजिंग.
वर्शन 1.1.0
22 जनवरी, 2018
पैकेजिंग में बदलाव
अब नई और छोटी डिपेंडेंसी उपलब्ध हैं:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
एपीआई में हुए बदलाव
LifecycleActivity
औरLifecycleFragment
के इस्तेमाल पर रोक लगा दी गई है. इन्हें अब हटा दिया गया है. कृपयाFragmentActivity
,AppCompatActivity
या सहायताFragment
का इस्तेमाल करें.@NonNull
एनोटेशन कोViewModelProviders
औरViewModelStores
में जोड़ा गया हैViewModelProviders
कंस्ट्रक्टर अब काम नहीं करता - कृपया इसके स्टैटिक तरीकों का सीधे तौर पर इस्तेमाल करेंViewModelProviders.DefaultFactory
के इस्तेमाल पर रोक लगा दी गई है - कृपयाViewModelProvider.AndroidViewModelFactory
का इस्तेमाल करें- स्टैटिक
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
मेथड को जोड़ा गया है, ताकिViewModel
औरAndroidViewModel
इंस्टेंस बनाने के लिए, स्टैटिकFactory
को वापस पाया जा सके.