DataStore

SharedPreferences के कुछ नुकसानों को दूर करते हुए, डेटा को असिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के हिसाब से स्टोर करना
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
15 जनवरी, 2025 1.1.2 - - -

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

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

DataStore को लागू करने के दो तरीके हैं: Preferences और Proto. इनमें से किसी एक को चुनें. दोनों तरीकों में, Android के बिना काम करने वाली डिपेंडेंसी भी जोड़ी जा सकती हैं.

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

Preferences DataStore

Groovy

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.1.2"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.2"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.2"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.2"
    }
    

Kotlin

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.1.2")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.2")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.1.2")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.2")
    }
    

Proto DataStore

Groovy

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.2"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.2"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.2"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.2"
    }
    

Kotlin

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.2")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.2")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.1.2")
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.2")
    }
    

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

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

नई समस्या बनाना

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

वर्शन 1.1

वर्शन 1.1.2

15 जनवरी, 2025

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

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

  • रीड-थ्रू (DataStore.data.first()) के इंतज़ार का समय आठ गुना कम किया गया. (22b8a40)
  • ReplaceFileCorruptionHandler को KMP के सामान्य कोड से बनाया जा सकता है. (7632e839)

वर्शन 1.1.1

1 मई, 2024

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

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

  • Linux में "संसाधन लॉक हो जाएगा" गड़बड़ी के लिए गलत सूचना देने की समस्या को कम किया गया. यह समस्या तब आती है, जब फ़ाइल लॉक को छोड़कर, एक से ज़्यादा DataStore इंस्टेंस अलग-अलग प्रोसेस से लिखने की कोशिश करते हैं.

वर्शन 1.1.0

17 अप्रैल, 2024

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

1.0.0 रिलीज़ के बाद किए गए मुख्य बदलाव

ज़्यादा जानकारी के लिए, कृपया 1.1.0 के ऐल्फ़ा और बीटा वर्शन के रिलीज़ नोट देखें. 1.1.0 में किए गए कुछ मुख्य अपडेट ये हैं:

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

वर्शन 1.1.0-rc01

3 अप्रैल, 2024

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

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

  • परफ़ॉर्मेंस में गिरावट की समस्या को ठीक किया गया. यह समस्या तब आती है, जब नया डेटा पुराने डेटा से मेल खाता है और डिस्क पर डेटा लिखने के लिए updateData कॉल ऑप्टिमाइज़ नहीं होते (d64cfb5)
  • रेस कंडीशन को ठीक किया गया है. इसकी वजह से, MultiProcess DataStore को शुरू करने के दौरान, अमान्य होने की जानकारी नहीं मिल सकती थी. ((b/326141553),(094c2dd))

वर्शन 1.1.0-beta02

6 मार्च, 2024

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

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

  • DataStore पर परफ़ॉर्मेंस में सुधार होने पर, अपडेट की सूचनाएं सिर्फ़ तब इकट्ठा की जाती हैं, जब यह देखा जाता है. (b/267792241)
    • ध्यान दें कि अगर Coroutines टेस्टिंग लाइब्रेरी का इस्तेमाल किया जा रहा है, तो यह बदलाव आपके टेस्ट में UncompletedCoroutinesError को ट्रिगर कर सकता है. इस समस्या से बचने के लिए, अपने टेस्ट में DataStore को शुरू करते समय TestScope.backgroundScope को पास करना न भूलें.
  • ​एक ही इंस्टेंस पर नेस्ट किए गए updateData कॉल की समस्या को ठीक किया गया, ताकि डेडलॉक न हो. (b/241760537)
  • माइग्रेशन के दौरान SharedPreferences को मिटाने में DataStore की मदद न मिलने पर, अब DataStore IOExceptions को नहीं दिखाएगा. (b/195553816)
  • Android JVM एनवायरमेंट के अलावा, अन्य एनवायरमेंट में updateData के दौरान फ़ाइल का नाम बदलने में आने वाली समस्या को ठीक किया गया. (b/203087070)
  • DataStore को शुरू करने के बाद, CorruptionException को मैनेज न कर पाने की समस्या को ठीक किया गया है. (b/289582516)

वर्शन 1.1.0-beta01

10 जनवरी, 2024

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

वर्शन 1.1.0-alpha07

29 नवंबर, 2023

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

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

  • MultiProcessDataStoreFactory तरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.@ExperimentalMultiProcessDataStore एनोटेशन को पूरी तरह से हटा दिया गया है. (Ieee54, I8e607)

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

  • @ExperimentalMultiProcessDataStore एनोटेशन हटाने की सुविधा को 1.1.0-alpha07 में रोल आउट करें. (I8e607)

वर्शन 1.1.0-alpha06

1 नवंबर, 2023

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

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

  • createSingleProcessCoordinator फ़ैक्ट्री मेथड को अब फ़ाइल पाथ (String, java.io.File, और okio.Path) मिलता है, ताकि वह createMultiProcessCoordinator के साथ काम कर सके. (I211c8, b/305755935)

वर्शन 1.1.0-alpha05

6 सितंबर, 2023

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

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

  • डेटास्टोर FileStorage अब सार्वजनिक तौर पर उपलब्ध है, ताकि क्लाइंट कस्टम पैरामीटर दे सकें. (Icb985)
  • OkioStorage कंस्ट्रक्टर को InterProcessCoordinator स्वीकार करने के लिए बदला गया, ताकि इसका इस्तेमाल Android पर MultiProcessCoordinator के साथ किया जा सके. (Iecea3)

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

  • MultiProcessCoordinator एक ही डायरेक्ट्री में कई फ़ाइलों को मॉनिटर न कर पाने की समस्या को ठीक करना.
  • फ़ाइल के पाथ सामान्य न होने पर, डुप्लीकेट फ़ाइलों का पता नहीं चलने की समस्या को ठीक करना.
  • RxDataStore#isDisposed से मिली गलत वैल्यू ठीक करें.
  • datstore-preferences-core आर्टफ़ैक्ट के लिए, ProGuard कॉन्फ़िगरेशन मौजूद न होने की समस्या को ठीक करें.

वर्शन 1.1.0-alpha04

5 अप्रैल, 2023

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

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

  • रेस कंडीशन से बचने के लिए, इंटरनल लागू करने की प्रोसेस को बेहतर बनाएं. ऐसा इसलिए, ताकि अपडेट के बाद DataStore का डेटा फ़्लो पुरानी वैल्यू को न दिखाए.

वर्शन 1.1.0-alpha03

24 मार्च, 2023

androidx.datastore:datastore-*:1.1.0-alpha03 रिलीज़ हो गया है.

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

  • Kotlin नेटिव टारगेट (b/274786186, KT-57531) में, बिल्ड से जुड़ी समस्या को हल करने के लिए, Maven आर्टफ़ैक्ट से डिपेंडेंसी की पाबंदियां हटा दी गई हैं.

वर्शन 1.1.0-alpha02

22 मार्च, 2023

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

ध्यान दें

ध्यान दें कि इस वर्शन में एक अहम इंटरनल रीफ़ैक्टर शामिल है, जो सिंगल प्रोसेस और मल्टी प्रोसेस DataStore लागू करने के लिए, लागू किए गए बदलावों को मर्ज करता है. कृपया अनचाहे व्यवहार में होने वाले बदलावों पर नज़र रखें. जैसे, अपडेट की सूचनाओं का समय. इस तरह के बदलावों की शिकायत करने के लिए, समस्या ट्रैकर कॉम्पोनेंट का इस्तेमाल किया जा सकता है.

नई सुविधाएं

  • अब KMM प्रोजेक्ट में DataStore का इस्तेमाल किया जा सकता है. ध्यान दें कि DataStore के नॉन-Android टारगेट अब भी एक्सपेरिमेंट के तौर पर उपलब्ध हैं. हालांकि, हमने वर्शन मर्ज करने का फ़ैसला लिया है, ताकि डेवलपर उन्हें आसानी से आज़मा सकें.
  • मल्टी प्रोसेस की सुविधाओं को androidx.datastore.multiprocess से androidx.datastore.core में ले जाया गया है.
  • फ़ाइल ऑपरेशन के लिए Storage ऑब्जेक्ट के साथ DataStore इंस्टेंस बनाने के लिए, androidx.datastore.core.MultiProcessDataStoreFactory में एक नई फ़ैक्ट्री मेथड जोड़ें.
  • एक नया इंटरफ़ेस InterProcessCoordinator जोड़ा गया है. इससे कई DataStore इंस्टेंस, अलग-अलग प्रोसेस के साथ कम्यूनिकेट कर पाएंगे. ध्यान दें कि InterProcessCoordinator को मल्टी-प्रोसेस मोड में सिर्फ़ Android पर लागू किया जा सकता है.

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

  • datastore-core इंटरफ़ेस में StorageConnection में InterProcessCoordinator जोड़ें (I555bb)
  • Storage का इस्तेमाल करने के लिए, datastore-core MultiProcessDataStoreFactory में एपीआई बदलें. (Iac02f)
  • datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाना (I76d7c)
  • datastore-preferences-core (I4b788) से PreferencesSerializer को एक्सपोज़ किया गया
  • @JvmDefaultWithCompatibility एनोटेशन जोड़ना (I8f206)

वर्शन 1.1.0-alpha01

9 नवंबर, 2022

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

नई सुविधाएं

  • एक से ज़्यादा प्रोसेस वाले इस्तेमाल के उदाहरणों के साथ काम करता है. इनमें, सभी प्रोसेस में DataStore इंस्टेंस के बीच डेटा की एक जैसी स्थिति की गारंटी होती है. ऐसे DataStore इंस्टेंस बनाने के लिए, MultiProcessDataStoreFactory#create जोड़ें.
  • स्टोरेज का नया इंटरफ़ेस, जो Datastore के लिए स्टोरेज के मौजूदा तरीके को बदलने की अनुमति देता है. java.io और okio के लिए, लागू करने के तरीके दिए गए हैं. DataStore फ़ैक्ट्री में नए तरीके हैं, जो इस स्टोरेज ऑब्जेक्ट को स्वीकार करते हैं.

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

  • Storage का इस्तेमाल करने के लिए, datastore-core MultiProcessDataStoreFactory में एपीआई बदलें. (Iac02f)
  • datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाना (I76d7c)
  • datastore-preferences-core (I4b788) से PreferencesSerializer को एक्सपोज़ किया गया

वर्शन 1.0.0

वर्शन 1.0.0

4 अगस्त, 2021

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

1.0.0 के वर्शन की मुख्य सुविधाएं

Jetpack DataStore, डेटा स्टोर करने का एक तरीका है. इसकी मदद से, प्रोटोकॉल बफ़र की मदद से की-वैल्यू पेयर या टाइप किए गए ऑब्जेक्ट को स्टोर किया जा सकता है. DataStore, डेटा को असिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के हिसाब से स्टोर करने के लिए, Kotlin कोरुटिन और Flow का इस्तेमाल करता है.

वर्शन 1.0.0-rc02

21 जुलाई, 2021

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

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

  • साफ़ तौर पर बताएं कि अगर कोई कुंजी नहीं है, तो SharedPreferencesMigration नहीं चलेगा. (Icfa32, b/192824325)
  • MIGRATE_ALL_KEYS से बनाए गए SharedPreferencesMigration में, अनुरोध की गई कुंजी मौजूद न होने पर अपवाद मिलने की गड़बड़ी को ठीक किया गया. (Ie318a, b/192824325)

वर्शन 1.0.0-rc01

30 जून, 2021

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

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

  • उस गड़बड़ी को ठीक करता है जिसमें .java फ़ाइल को गलती से फ़ाइनल jar में जोड़ दिया गया था (I65d96, b/188985637)

वर्शन 1.0.0-beta02

16 जून, 2021

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

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

  • ClassVerificationFailure ठीक करें (b/187450483)

वर्शन 1.0.0-beta01

21 अप्रैल, 2021

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

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

  • सिर्फ़ Kotlin के तरीकों के लिए JVM ओवरलोड हटाएं (I2adc7)

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

  • डेटास्टोर डेलिगेट की वजह से कॉन्टेक्स्ट लीक होने की समस्या को ठीक किया गया (Ie96fc, b/184415662)

वर्शन 1.0.0-alpha08

10 मार्च, 2021

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

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

  • अब dataStore और preferencesDataStore प्रॉपर्टी के प्रतिनिधि के लिए, संदर्भ के हिसाब से माइग्रेशन जोड़ा जा सकता है. (I4ef69, b/173726702)
  • अगर अब डेटास्टोर डेलिगेट या context.createDataStore का इस्तेमाल नहीं किया जा रहा है, तो फ़ाइल का नाम पाने के लिए हेल्पर फ़ंक्शन जोड़ता है (I60f9a)
  • Serializer writeTo और readFrom को अब निलंबित कर दिया गया है. अगर आपने Serializer लागू किया है, तो आपको अपने फ़ंक्शन को निलंबित करने वाले फ़ंक्शन के तौर पर अपडेट करना होगा. (I1e58e)
  • RxDataStore के उपयोगकर्ताओं के लिए, प्रॉपर्टी के प्रतिनिधि जोड़े गए हैं. (Ied768, b/173726702)

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लगाना (I6aa29, b/174531520)

वर्शन 1.0.0-alpha07

24 फ़रवरी, 2021

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

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

  • Context.createDataStore एक्सटेंशन फ़ंक्शन को हटा दिया गया है और उसे globalDataStore प्रॉपर्टी के प्रतिनिधि से बदल दिया गया है. अपनी Kotlin फ़ाइल में, सबसे ऊपर globalDataStore को एक बार कॉल करें. उदाहरण के लिए:

    val Context.myDataStore by dataStore(...)
    

    इसे अपनी Kotlin फ़ाइल के टॉप लेवल पर रखें, ताकि इसका सिर्फ़ एक इंस्टेंस हो. (I57215, b/173726702)

  • RxDataStore फ़ंक्शन, अब DataStore के एक्सटेंशन फ़ंक्शन के बजाय RxDataStore क्लास में मौजूद हैं. (Idccdb, b/177691248)

  • अगर आपको EncryptedSharedPreferences (या डायरेक्ट बूट SharedPreferences) को DataStore में माइग्रेट करना है, तो अब SharedPreferencesMigration के नए कन्स्ट्रक्टर की मदद से ऐसा किया जा सकता है. इसकी मदद से, SharedPreferences को इंजेक्ट किया जा सकता है. (I8e04e, b/177278510)

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

  • अगर एक ही फ़ाइल के लिए कई चालू DataStore हैं, तो DataStore अब एक अपवाद दिखाएगा. अगर आपने अपने DataStore को सिंगलटन के तौर पर मैनेज नहीं किया था या यह पक्का नहीं किया था कि किसी फ़ाइल के लिए, DataStore के दो इंस्टेंस एक साथ चालू न हों, तो अब आपको DataStore में डेटा पढ़ने या उसमें डेटा लिखने के दौरान अपवाद दिख सकते हैं. इन्हें ठीक करने के लिए, अपने DataStore को सिंगलटन के तौर पर मैनेज करें. (Ib43f4, b/177691248)
  • कॉलर के स्कोप को रद्द करने पर, रद्द करने का तरीका ठीक करना. (I2c7b3)

वर्शन 1.0.0-alpha06

13 जनवरी, 2021

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

नई सुविधाएं

  • DataStore के लिए RxJava रैपर जोड़े गए. datastore-rxjava2/3 आर्टफ़ैक्ट में, मुख्य DataStore API (RxDataStore, RxDataStoreBuilder, और RxDataMigration) के लिए रैपर होते हैं. datastore-preferences-rxjava2/3 आर्टफ़ैक्ट में, प्राथमिकता वाले DataStore को बनाने के लिए बिल्डर होता है.

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

  • CorruptionHandler इंटरफ़ेस छिपाएं. इसे सार्वजनिक करने की कोई वजह नहीं थी, क्योंकि DataStore फ़ैक्ट्री सिर्फ़ ReplaceFileCorruptionHandler को स्वीकार करती है. (I0b3b3, b/176032264)
  • preferencesKey<T>(name: String): Key<T> तरीका हटा दिया गया है और इसे काम करने वाले हर टाइप के हिसाब से खास तरीकों से बदल दिया गया है. उदाहरण के लिए, preferencesKey<Int>("int") अब intPreferencesKey("int") (Ibcfac, b/170311106) है

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

  • DataStoreFactory के दस्तावेज़ में मौजूद उस गड़बड़ी को ठीक किया गया है जिसमें यह जानकारी नहीं दी गई थी कि डेटास्टोर फ़ाइल, “datastore/” सबडायरेक्ट्री में बनाई जाती है. (Ica222)

वर्शन 1.0.0-alpha05

2 दिसंबर, 2020

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

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

  • डेटास्टोर से एक साथ डेटा लिखने के बारे में बेहतर दस्तावेज़ और अपवाद जोड़ें. (Ia98a2, b/173522155, b/173726702)
  • अब हम Serializer.writeTo() को पास किए गए OutputStream को बंद करने की अनुमति देते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. (I5c9bf, b/173037611)

वर्शन 1.0.0-alpha04

17 नवंबर, 2020

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

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

  • पैकेजिंग से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, Preference Datastore 1.0.0-alpha03 में यह क्रैश होता है: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

वर्शन 1.0.0-alpha03

11 नवंबर, 2020

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

नई सुविधाएं

  • प्राथमिकताएं अब डबल वैल्यू के साथ काम करती हैं. यह तब काम आता है, जब आपको फ़्लोट की तुलना में ज़्यादा सटीक वैल्यू की ज़रूरत हो (I5be8f, b/169471808)

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

  • डेटास्टोर के लिए, पूरी तरह से Kotlin की डिपेंडेंसी बनाई गई है, ताकि तेज़ी से कंपाइल किया जा सके. androidx.datastore:datastore-core में सिर्फ़ Kotlin के मुख्य एपीआई शामिल हैं और androidx.datastore:datastore में Android पर निर्भर एपीआई शामिल हैं. इनमें SharedPreferencesMigration और Context.createDataStore कन्स्ट्रक्टर भी शामिल हैं.)(I42d75, b/168512698)
  • Kotlin कंपाइलेशन को तेज़ करने के लिए, प्राथमिकता डेटा स्टोर के टारगेट को अलग करना (Ia3c19)
  • सीरियलाइज़र को अब डिफ़ॉल्ट वैल्यू के लिए एक नई प्रॉपर्टी की ज़रूरत होती है. इसका इस्तेमाल तब किया जाएगा, जब डिस्क पर कोई डेटा न हो. इससे कस्टम सीरियलाइज़र को लागू करना आसान हो जाता है, ताकि उपयोगकर्ताओं को खाली इनपुट स्ट्रीम के लिए खास मामला न बनाना पड़े. खाली इनपुट स्ट्रीम, JSON के साथ पार्स नहीं होती हैं.

    • साथ ही, अब यह पुष्टि करने के लिए जांच की गई है कि writeTo() फ़ंक्शन में दी गई आउटपुट स्ट्रीम बंद नहीं है. अगर यह बंद है, तो यह अपवाद (I16e29) दिखाता है
  • SharedPreferencesView के कन्स्ट्रक्टर को इंटरनल बनाना. इसे टेस्ट करने के लिए, शुरुआत में सार्वजनिक किया गया था. इसके बजाय, टेस्ट में SharedPreferencesMigration बनाएं और उस पर टेस्ट करें. (I93891)

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

  • DataStoreFactory और PreferenceDataStoreFactory पर मौजूद produceFile पैरामीटर, अब सूची में आखिरी पैरामीटर है. इसलिए, इसका इस्तेमाल करके Kotlin के ट्रेलिंग लैम्ब्डा सिंटैक्स का इस्तेमाल किया जा सकता है. (Ibe7f1, b/169425442)
  • Kotlin के लिए, एपीआई की नई ज़रूरी शर्तों का पालन करना (I5ae1e)

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • java.lang.NoClassDefFoundError के साथ Preference Datastore क्रैश हो जाता है. (b/173036843)

वर्शन 1.0.0-alpha02

14 अक्टूबर, 2020

androidx.datastore:datastore-core:1.0.0-alpha02 और androidx.datastore:datastore-preferences:1.0.0-alpha02 रिलीज़ हो गए हैं. 1.0.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

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

  • datastore-core में, डेटा में बदलाव होने से बचाने के लिए सुरक्षा जोड़ी गई है. म्यूटेशन की वजह से, डेटास्टोर का इस्तेमाल करने वाले लोगों के लिए, डेटास्टोर का इस्तेमाल करना मुश्किल हो जाता है. ऐसा उन लोगों के लिए होता है जो डेटास्टोर का इस्तेमाल, नॉन-प्रोटो/नॉन-प्राथमिकता टाइप के साथ करते हैं (I6aa84)
  • Preferences.kt में toString मेथड जोड़ा गया, ताकि मौजूदा स्थिति को आसानी से डीबग किया जा सके (I96006)
  • DataStore.Preferences के गलत इस्तेमाल से बचाने के लिए, एक अपवाद जोड़ा गया है (I1134d)
  • एक गड़बड़ी को ठीक किया गया है, जिसकी वजह से ऐप्लिकेशन शुरू होने पर क्रैश हो जाता था (I69237, b/168580258)

वर्शन 1.0.0-alpha01

2 सितंबर, 2020

androidx.datastore:datastore-core:1.0.0-alpha01 और androidx.datastore:datastore-preferences:1.0.0-alpha01 रिलीज़ हो गए हैं. 1.0.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

Jetpack DataStore, डेटा स्टोर करने का एक नया और बेहतर तरीका है. इसका मकसद, SharedPreferences की जगह लेना है. Kotlin कोरुटिन और Flow पर आधारित DataStore, दो अलग-अलग तरीके से लागू किया जा सकता है:

  • Proto DataStore, जिसकी मदद से टाइप किए गए ऑब्जेक्ट (प्रोटोकॉल बफ़र के साथ काम करते हैं) सेव किए जा सकते हैं
  • Preferences DataStore, जो की-वैल्यू पेयर को स्टोर करता है

डेटा को अलग-अलग समय पर, लगातार, और लेन-देन के हिसाब से सेव किया जाता है. इससे SharedPreferences की ज़्यादातर समस्याओं को हल किया जा सकता है.