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 वर्शन में ये बदलाव शामिल हैं.

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

वर्शन 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 को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity 1.2.0, Fragment 1.3.0, और AppCompat 1.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 को वापस पाया जा सकता है. इसे सही तरीके से पॉप्युलेट करने के लिए, आपको Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05, और AppCompat 1.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 के लिए कॉलबैक रजिस्टर किया जाता है.