DataStore
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
26 फ़रवरी, 2025 | 1.1.3 | - | - | - |
डिपेंडेंसी का एलान करना
DataStore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
DataStore को दो तरीकों से लागू किया जा सकता है: Preferences और Proto. इनमें से किसी एक को चुनें. दोनों तरीकों में, Android के बिना काम करने वाली डिपेंडेंसी भी जोड़ी जा सकती हैं.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में ज़रूरी डिपेंडेंसी जोड़ें:
Preferences DataStore
// 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" }
// 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
// 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" }
// 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.3
26 फ़रवरी, 2025
androidx.datastore:datastore-*:1.1.3
रिलीज़ हो गया है. वर्शन 1.1.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐप्लिकेशन को शुरू करने पर,
OkioStorage
मेंFileNotFoundException
से जुड़ी समस्या को ठीक किया गया. अगर फ़ाइल को पढ़ने की शुरुआती कोशिश पूरी नहीं होती है, तो दूसरी कोशिश की जाएगी. ऐसा तब होगा, जब शुरुआती पढ़ने के दौरान फ़ाइल किसी दूसरी प्रोसेस से बनाई गई हो. (I43b3f, b/337870543)
वर्शन 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
को पास करना न भूलें.
- ध्यान दें कि अगर Coroutines टेस्टिंग लाइब्रेरी का इस्तेमाल किया जा रहा है, तो यह बदलाव आपके टेस्ट में
- एक ही इंस्टेंस पर नेस्ट किए गए
updateData
कॉल की समस्या को ठीक किया गया, ताकि डेडलॉक न हो. (b/241760537) - माइग्रेशन के दौरान
SharedPreferences
को मिटाने मेंDataStore
के काम न करने पर, अबIOExceptions
को नहीं दिखाया जाएगा. (b/195553816) - Android JVM के अलावा दूसरे 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)
गड़बड़ियां ठीक की गईं
- 1.1.0-alpha07 में
@ExperimentalMultiProcessDataStore
एनोटेशन हटाने की सुविधा को रोल आउट करें. (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
- क्रैश की मूल शिकायत यहां की गई थी: b/173036843
- (I4712d, b/173036843)
वर्शन 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 की ज़्यादातर समस्याओं को हल किया जा सकता है.