Savedstate
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
11 दिसंबर, 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
डिपेंडेंसी का एलान करना
SavedState पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { // Java language implementation implementation "androidx.savedstate:savedstate:1.2.1" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.2.1" }
Kotlin
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.2.1") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.2.1") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 1.3
वर्शन 1.3.0-alpha06
11 दिसंबर, 2024
androidx.savedstate:savedstate-*:1.3.0-alpha06
रिलीज़ हो गया है. वर्शन 1.3.0-alpha06 में ये कमिट शामिल हैं.
नई सुविधाएं
SavedState
KMP अब इनके साथ काम करता है:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
, और Serializable (Android). (I1ba94, b/334076622)KSerializer
इंस्टेंस जोड़ें. इनका इस्तेमाल, बंडल के साथ काम करने वाले Java और Android टाइप को कोड में बदलने/कोड से बदलने के लिए किया जा सकता है. इसके लिए, अपनी क्लास में काम के फ़ील्ड को@Serializable(with = ParcelableSerializer::class)
से मार्क करें. (I8c10f, I28caf, b/376026712)findViewTreeSavedStateRegistryOwner
की मदद से वापस लाए गएSavedStateRegistryOwner
इंस्टेंस, अब किसी व्यू के अलग-अलग पैरंट की मदद से हल किए जा सकते हैं. जैसे,ViewOverlay
. अलग-अलग व्यू के पैरंट के बारे में ज़्यादा जानकारी के लिए, कोर के रिलीज़ नोट याViewTree.setViewTreeDisjointParent
में दस्तावेज़ देखें. (Iccb33)
एपीआई में हुए बदलाव
- नाम और पैकेज के संगठन को
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744) के मुताबिक बनाएं
वर्शन 1.3.0-alpha05
13 नवंबर, 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये कमिट शामिल हैं.
KotlinX सीरियलाइज़ेशन के लिए सहायता
SavedState
में अब KotlinX Serialization की सुविधा शामिल है.encodeToSavedState
औरdecodeFromSavedState
तरीकों का इस्तेमाल करके,@Serializable
से एनोटेट की गई क्लास कोSavedState
में बदला जा सकता है. Android पर, दिखाया गयाSavedState
एक सामान्यBundle
होता है. इसका इस्तेमाल,Bundle
स्वीकार करने वाले किसी भी एपीआई के साथ किया जा सकता है. (I6f59f, b/374102924)@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }
हमने
saved
को भी शामिल किया है, जो एक लेज़ी प्रॉपर्टी डेलीगेट है. इससे@Serializable
क्लास कोSavedStateRegistryOwner
में आसानी से सेव किया जा सकता है (उदाहरण के लिए,ComponentActivity
,Fragment
वगैरह) को सेव किया जा सकता है. साथ ही, प्रोसेस के बंद होने और फिर से शुरू होने पर, उन क्लास को अपने-आप वापस लाया जा सकता है. कृपया ध्यान दें किsaved
डेलिगेट,init
लैम्ब्डा को तब तक कॉल नहीं करेगा याSavedStateRegistry
में कुछ भी सेव नहीं करेगा, जब तक उसे ऐक्सेस नहीं किया जाता. (I66739, b/376027806)@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }
लाइफ़साइकल
2.9.0-alpha07
में जोड़ी गईSavedStateHandle
के लिए, मिलती-जुलतीsaved
प्रॉपर्टी का प्रतिनिधि भी है.
एपीआई में हुए बदलाव
toMap
कोSavedState
में जोड़ें, ताकि किसी भीSavedState
को रेगुलरMap
(शैलो कॉपी) में बदला जा सके. (I487b9, b/334076622)SavedState
KMP अब ऐरे के साथ काम करता है. (Ic0552, b/334076622)
वर्शन 1.3.0-alpha04
30 अक्टूबर, 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04
रिलीज़ हो गया है. वर्शन 1.3.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- SavedState KMP अब Char के साथ काम करता है. (I9ac2f, b/334076622)
- SavedState KMP में
putNull
औरisNull
जोड़ें. (Iea71d, b/334076622) - शुरुआती
Map<String, Any>
(I9b37d, b/334076622) के साथ काम करने वाले अतिरिक्तsavedState
फ़ैक्ट्री पैरामीटर जोड़ें - SavedState KMP अब
contentDeepEquals
तुलना करने की सुविधा देता है. (Ia515c, b/334076622) - SavedState KMP अब Long के साथ काम करता है. (I4c180, b/334076622)
वर्शन 1.3.0-alpha03
16 अक्टूबर, 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03
को बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 1.3.0-alpha03 में ये कमिट शामिल हैं.
वर्शन 1.3.0-alpha02
2 अक्टूबर, 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02
रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये कमिट शामिल हैं.
Kotlin Multiplatform
SavedState
मॉड्यूल अब KMP के साथ काम करता है. अब यह सुविधा Android, iOS, Linux, Mac, और JVM डेस्कटॉप एनवायरमेंट पर काम करती है. (I26305, b/334076622)
नई सुविधाएं
SavedState
ऑब्स्क्यूर टाइप को एब्स्ट्रैक्शन के तौर पर पेश किया गया है, ताकि KMP में ऐप्लिकेशन की स्थिति को सेव और वापस लाने का एक तरीका दिया जा सके. इसमें सेव किए जाने वाले स्टेटस में बदलाव करने के लिए,SavedStateReader
औरSavedStateWriter
शामिल हैं. Android पर,SavedState
,Bundle
का टाइप उपनाम है. इससे बाइनरी के साथ काम करने की सुविधा मिलती है. साथ ही, मौजूदा एपीआई को एक सामान्य सोर्स सेट में माइग्रेट करने में मदद मिलती है. अन्य प्लैटफ़ॉर्म पर,SavedState
एकMap<String, Any>
इंस्टेंस है. (I18575, b/334076622)
// Create a new SavedState object using the savedState DSL:
val savedState = savedState {
putInt("currentPage", 1)
putString("filter", "favorites")
}
// Read from a SavedState object
val currentPage = savedState.read { getInt("currentPage") }
// Edit an existing SavedState object
savedState.write {
remove("currentPage")
}
एपीआई में हुए बदलाव
SavedStateRegistry
औरSavedStateRegistryController
, अब केएमपी के साथ काम करते हैं. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
, औरSavedStateReader
अब KMP के साथ काम करते हैं. (I26305, b/334076622)
वर्शन 1.3.0-alpha01
7 अगस्त, 2024
androidx.savedstate:savedstate:1.3.0-alpha01
और androidx.savedstate:savedstate-ktx:1.3.0-alpha01
रिलीज़ हो गए हैं. वर्शन 1.3.0-alpha01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
savedstate-ktx
kotlin एक्सटेंशन को अब सेव किए गए स्टेटस वाले बुनियादी मॉड्यूल में ले जाया गया है. (I1cc18, b/274803094)
ध्यान दें
compileSdk
को 35 पर अपडेट करें (5dc41be)
वर्शन 1.2.1
वर्शन 1.2.1
22 मार्च, 2023
androidx.savedstate:savedstate:1.2.1
और androidx.savedstate:savedstate-ktx:1.2.1
रिलीज़ हो गए हैं. 1.2.1 वर्शन में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
SavedState
अब लाइफ़साइकल2.6.1
पर निर्भर करता है. (c1f621)
वर्शन 1.2.0
वर्शन 1.2.0
29 जून, 2022
androidx.savedstate:savedstate:1.2.0
और androidx.savedstate:savedstate-ktx:1.2.0
रिलीज़ हो गए हैं. 1.2.0 वर्शन में ये बदलाव शामिल हैं.
1.1.0 के बाद किए गए अहम बदलाव
SavedStateRegistryController
में अबperformAttach()
की मदद से,SavedStateRegistry
को पहले से अटैच करने की सुविधा उपलब्ध है.- अब
getSavedStateProvider()
की मदद से,SavedStateRegistry
से पहले से रजिस्टर किया गयाSavedStateProvider
वापस पाया जा सकता है. SavedState
लाइब्रेरी को Kotlin में फिर से लिखा गया है.SavedStateRegistryOwner
के लिए, यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पिछलेgetSavedStateRegistry()
फ़ंक्शन को लागू करने के बजाय,savedStateRegistry
प्रॉपर्टी को बदलना होगा.ViewTreeSavedStateRegistryOwner
के लिए, यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए,androidx.savedstate.setViewTreeSavedStateRegistryOwner
औरandroidx.savedstate.findViewTreeSavedStateRegistryOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे इंपोर्ट और इस्तेमाल करना होगा. यहfindViewTreeSavedStateRegistryOwner
केsavedstate-ktx
एपीआई की जगह लेगा.
व्यवहार में बदलाव
SavedStateRegistry
अब कोई स्टेट सेव न होने पर, खाली बंडल सेव नहीं करता.
वर्शन 1.2.0-rc01
11 मई, 2022
androidx.savedstate:savedstate:1.2.0-rc01
और androidx.savedstate:savedstate-ktx:1.2.0-rc01
रिलीज़ हो गए हैं. 1.2.0-rc01 वर्शन में ये बदलाव शामिल हैं.
दस्तावेज़ में बदलाव
SavedStateRegistryOwner
Kdocs को अपडेट किया गया है, ताकि मालिक की ज़िम्मेदारियों और समझौते के बारे में साफ़ तौर पर बताया जा सके. जैसे, इंटरफ़ेस को कैसे लागू करना चाहिए याSavedStateRegistryController
पर मेथड कब कॉल करने चाहिए. (Iefc95, b/228887344)
वर्शन 1.2.0-beta01
20 अप्रैल, 2022
androidx.savedstate:savedstate:1.2.0-beta01
और androidx.savedstate:savedstate-ktx:1.2.0-beta01
रिलीज़ हो गए हैं. 1.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateRegistry
औरViewTreeSavedStateRegistryOwner
क्लास को Kotlin में फिर से लिखा गया है.ViewTreeSavedStateRegistryOwner
के लिए, यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पहले से सेट किए गए मालिक को सेट करने और ढूंढने के लिए,androidx.savedstate.setViewTreeSavedStateRegistryOwner
औरandroidx.savedstate.findViewTreeSavedStateRegistryOwner
केView
पर Kotlin एक्सटेंशन के तरीकों को सीधे इंपोर्ट और इस्तेमाल करना होगा. यहfindViewTreeSavedStateRegistryOwner
केsavedstate-ktx
एपीआई की जगह लेगा. यह बाइनरी के साथ काम करता है. साथ ही, Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, सोर्स के साथ काम करता रहता है. (b/220191285)
वर्शन 1.2.0-alpha02
6 अप्रैल, 2022
androidx.savedstate:savedstate:1.2.0-alpha02
और androidx.savedstate:savedstate-ktx:1.2.0-alpha02
रिलीज़ हो गए हैं. 1.2.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
getSavedStateProvider()
की मदद से,SavedStateRegistry
से पहले से रजिस्टर किया गयाSavedStateProvider
वापस पाया जा सकता है. (I7ea47, b/215406268)
एपीआई में हुए बदलाव
SavedStateRegistryOwner
,SavedStateRegistryController
, औरRecreator
क्लास को Kotlin में फिर से लिखा गया है.SavedStateRegistryOwner
के लिए, यह Kotlin में लिखी गई उन क्लास के लिए सोर्स के साथ काम न करने वाला बदलाव है - अब आपको पिछलेgetSavedStateRegistry()
फ़ंक्शन को लागू करने के बजाय,savedStateRegistry
प्रॉपर्टी को बदलना होगा. यह Java प्रोग्रामिंग लैंग्वेज में लिखे गए लागू करने के लिए, बाइनरी और सोर्स के साथ काम करता है. (b/220191285)
वर्शन 1.2.0-alpha01
26 जनवरी, 2022
androidx.savedstate:savedstate:1.2.0-alpha01
और androidx.savedstate:savedstate-ktx:1.2.0-alpha01
रिलीज़ हो गए हैं. 1.2.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
SavedStateRegistryController
अबperformAttach()
के ज़रिए,SavedStateRegistry
को पहले से अटैच करने की अनुमति देता है. (Ice4bf)
व्यवहार में बदलाव
SavedStateRegistry
अब कोई स्टेट सेव न होने पर, खाली बंडल सेव नहीं करता. (aosp/1896865, b/203457956)
वर्शन 1.1.0
वर्शन 1.1.0
10 फ़रवरी, 2021
androidx.savedstate:savedstate:1.1.0
और androidx.savedstate:savedstate-ktx:1.1.0
रिलीज़ हो गए हैं. 1.1.0 वर्शन में ये बदलाव शामिल हैं.
1.0.0 के बाद किए गए मुख्य बदलाव
ViewTreeSavedStateRegistryOwner
एपीआई: नएViewTreeSavedStateRegistryOwner.get(View)
एपीआई की मदद से, किसीView
इंस्टेंस में मौजूदSavedStateRegistry
को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity1.2.0
, Fragment1.3.0
, और AppCompat1.3.0-alpha01
या उसके बाद के वर्शन पर अपग्रेड करना होगा.savedstate-ktx
आर्टफ़ैक्ट:savedstate-ktx
आर्टफ़ैक्ट कोfindViewTreeSavedStateRegistryOwner()
Kotlin एक्सटेंशन के साथ जोड़ा गया है, ताकिViewTreeSavedStateRegistryOwner
के साथ काम किया जा सके.
वर्शन 1.1.0-rc01
16 दिसंबर, 2020
androidx.savedstate:savedstate:1.1.0-rc01
और androidx.savedstate:savedstate-ktx:1.1.0-rc01
को 1.1.0-beta01
से बिना किसी बदलाव के रिलीज़ किया गया है. 1.1.0-rc01 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.1.0-beta01
1 अक्टूबर, 2020
androidx.savedstate:savedstate:1.1.0-beta01
और androidx.savedstate:savedstate-ktx:1.1.0-beta01
को 1.1.0-alpha01
से बिना किसी बदलाव के रिलीज़ किया गया है. 1.1.0-beta01 वर्शन में ये बदलाव शामिल हैं.
वर्शन 1.1.0-alpha01
20 मई, 2020
androidx.savedstate:savedstate:1.1.0-alpha01
और androidx.savedstate:savedstate-ktx:1.1.0-alpha01
रिलीज़ हो गए हैं. 1.1.0-alpha01 वर्शन में ये कमिट शामिल हैं.
नई सुविधाएं
- नए
ViewTreeSavedStateRegistryOwner.get(View)
एपीआई की मदद से, किसीView
इंस्टेंस में मौजूदSavedStateRegistry
को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
, और AppCompat1.3.0-alpha01
पर अपग्रेड करना होगा. (aosp/1298679) ViewTreeSavedStateRegistryOwner
के साथ काम करने के लिए, नएsavedstate-ktx
आर्टफ़ैक्ट कोfindViewTreeSavedStateRegistryOwner()
Kotlin एक्सटेंशन के साथ जोड़ा गया है. (aosp/1299434)
वर्शन 1.0.0
वर्शन 1.0.0
5 सितंबर, 2019
androidx.savedstate:savedstate:1.0.0
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
SavedState 1.0.0 की मुख्य सुविधाएं
androidx.savedstate
को रिलीज़ किया गया जांचा और परखा हुआ वर्शन. यह एपीआई का एक सेट है. इसकी मदद से, डेवलपर, restore / saveInstanceState प्रोसेस में कॉम्पोनेंट प्लग इन कर सकते हैं. एपीआई का मुख्य एंट्री पॉइंट SavedStateRegistry
है. यह consumeRestoredStateForKey
का इस्तेमाल करके, पहले से सेव किए गए स्टेटस को वापस लाने का तरीका उपलब्ध कराता है. साथ ही, registerSavedStateProvider
के लिए कॉलबैक रजिस्टर करता है, ताकि सिस्टम का अनुरोध मिलने पर सेव किया गया स्टेटस दिया जा सके.
वर्शन 1.0.0-rc01
2 जुलाई, 2019
androidx.savedstate:savedstate:1.0.0-rc01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- ProGuard का गलत नियम ठीक किया गया (b/132655499)
वर्शन 1.0.0-beta01
7 मई, 2019
androidx.savedstate:savedstate:1.0.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
वर्शन 1.0.0-alpha02
13 मार्च, 2019
androidx.savedstate:savedstate:1.0.0-alpha02
रिलीज़ हो गया है. androidx.savedstate:savedstate
, आर्टफ़ैक्ट androidx.savedstate:savedstate-bundle
और androidx.savedstate:savedstate-common
को एक आर्टफ़ैक्ट में जोड़ता है. ऐसा इसलिए किया गया, क्योंकि सेव किए गए स्टेटस के इंफ़्रास्ट्रक्चर को आसान बनाने और SavedStateRegistry
से सामान्य आइटम हटाने का फ़ैसला लिया गया था. इसलिए, अलग-अलग मॉड्यूल की ज़रूरत नहीं है.
इस वर्शन में शामिल किए गए सभी कमिट की पूरी सूची यहां देखी जा सकती है.
नई सुविधाएं
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
को जोड़ा गया. दी गई क्लास का इंस्टेंस बन जाएगा और मालिकाना हक वाले कॉम्पोनेंट के रीस्टार्ट होने पर,AutoRecreated.onRecreated
तरीका चलेगा.
एपीआई में हुए बदलाव
SavedStateRegistry<T>
से सामान्य प्रॉडक्ट हटाए गए- AbstractSavedStateRegistry और BundlableSavedStateRegistry को हटा दिया गया है. इसके बजाय, सामान्य
SavedStateRegistry
का इस्तेमाल करें BundleSavedStateRegistryOwner
का नाम बदलकरSavedStateRegistryOwner
कर दिया गया है
वर्शन 1.0.0-alpha01
17 दिसंबर, 2018
यह SavedState
की पहली रिलीज़ है.
नई सुविधाएं
androidx.savedstate
, अल्फा एपीआई का एक नया सेट है. इसकी मदद से, डेवलपर, restore / saveInstanceState प्रोसेस में कॉम्पोनेंट प्लग इन कर सकते हैं. एपीआई का मुख्य एंट्री पॉइंट SavedStateRegistry<T>
है. इससे consumeRestoredStateForKey
के ज़रिए, पहले से सेव की गई स्थिति को वापस पाने का तरीका मिलता है. साथ ही, सिस्टम के अनुरोध करने पर सेव की गई स्थिति देने के लिए, registerSavedStateProvider
के लिए कॉलबैक रजिस्टर किया जाता है.