Android Academy · पाठ

Preferences DataStore

की-वैल्यू सेटिंग रिएक्टिव तरीके से संग्रहीत करें।

पाठ 2, कुल 4 में से13 चरण

Preferences DataStore, CoddyKit पर Android Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Android Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Preferences DataStore

Preferences DataStore सरल कुंजी-मान युग्म संग्रहीत करता है, बिल्कुल SharedPreferences की तरह, लेकिन आधुनिक अतुल्यकालिक API के साथ। यह पूरे ऑब्जेक्ट पर स्कीमा या प्रकार-सुरक्षा लागू नहीं करता।

आप टाइप किए गए कुंजियों के माध्यम से मानों तक पहुँचते हैं।

DataStore बनाना

आप Kotlin फ़ाइल के शीर्ष स्तर पर preferencesDataStore प्रॉपर्टी डेलीगेट का उपयोग करके, प्रत्येक फ़ाइल के लिए DataStore का एक ही इंस्टेंस बनाते हैं। name डिस्क पर मौजूद फ़ाइल का नाम बन जाता है।

import androidx.datastore.preferences.preferencesDataStore
import androidx.datastore.preferences.core.Preferences

val Context.dataStore: DataStore<Preferences> by
    preferencesDataStore(name = "settings")

शीर्ष-स्तरीय डेलीगेट क्यों

डेलीगेट यह सुनिश्चित करता है कि आपकी प्रक्रिया में उस फ़ाइल नाम के लिए DataStore का ठीक एक इंस्टेंस हो। एक ही फ़ाइल के लिए दो इंस्टेंस बनाने पर त्रुटि आती है, क्योंकि वे एक ही डेटा के लिए आपस में संघर्ष करेंगे।

इसे शीर्ष-स्तरीय Context एक्सटेंशन के रूप में घोषित करने से यह सिंगलटन बना रहता है।

प्राथमिकता कुंजियाँ

हर मान के लिए एक टाइप की गई कुंजी आवश्यक है। कुंजी प्रविष्टि का नाम भी बताती है और उसका प्रकार भी निश्चित करती है। सहायक फ़ंक्शन प्रत्येक समर्थित प्रकार के लिए कुंजियाँ बनाते हैं।

import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey

val USERNAME = stringPreferencesKey("username")
val DARK_MODE = booleanPreferencesKey("dark_mode")
val LAUNCH_COUNT = intPreferencesKey("launch_count")

समर्थित कुंजी प्रकार

Preferences DataStore इन आदिम कुंजी प्रकारों का समर्थन करता है:

  • stringPreferencesKey
  • booleanPreferencesKey
  • intPreferencesKey, longPreferencesKey, floatPreferencesKey, doublePreferencesKey
  • stringSetPreferencesKey

कुंजियाँ एक ही स्थान पर परिभाषित करें

एक सामान्य तरीका यह है कि सभी कुंजियों को किसी object में एकत्रित कर लिया जाए, ताकि उन्हें ढूँढना और दोबारा उपयोग करना आसान हो तथा स्ट्रिंग नामों में टाइपिंग की गलतियों से बचा जा सके।

object PrefKeys {
    val USERNAME = stringPreferencesKey("username")
    val DARK_MODE = booleanPreferencesKey("dark_mode")
    val FONT_SIZE = intPreferencesKey("font_size")
}

स्ट्रिंग कुंजियाँ बनाम चर नाम

ध्यान रखें कि स्ट्रिंग तर्क (जैसे "dark_mode") ही डिस्क पर लिखा जाता है। बाद में इसका नाम बदलने पर पुराने मानों तक पहुँच नहीं रहेगी। Kotlin का val नाम केवल आपके कोड के लिए होता है।

हर उद्देश्य के लिए एक DataStore

आप अलग-अलग उद्देश्यों के लिए कई DataStore बना सकते हैं और प्रत्येक का अपना फ़ाइल नाम रख सकते हैं; उदाहरण के लिए, एक "settings" स्टोर और एक "user_session" स्टोर। संबंधित कुंजियों को साथ रखें।

val Context.settingsStore by preferencesDataStore(name = "settings")
val Context.sessionStore by preferencesDataStore(name = "session")

यूआई परत से पहुँच

हालाँकि डेलीगेट Context से जुड़ा होता है, फिर भी इसे सीधे Composable में न पढ़ें। DataStore को किसी रिपॉज़िटरी में इंजेक्ट करें और फिर ViewModel के लिए फ़्लो उपलब्ध कराएँ। इससे यूआई का परीक्षण किया जा सकता है।

सरल रिपॉज़िटरी संरचना

DataStore को किसी रिपॉज़िटरी क्लास में लपेटने से आपको साफ़ API और कुंजियों तथा मैपिंग लॉजिक को परिभाषित करने के लिए एक ही स्थान मिलता है।

class SettingsRepository(private val dataStore: DataStore<Preferences>) {
    val darkMode: Flow<Boolean> = dataStore.data
        .map { it[PrefKeys.DARK_MODE] ?: false }
}

डिफ़ॉल्ट मान

कुंजी अभी मौजूद नहीं हो सकती, इसलिए पढ़ने पर null मिलता है। किसी प्राथमिकता मान की मैपिंग करते समय हमेशा Elvis ऑपरेटर ?: से डिफ़ॉल्ट मान दें।

val fontSize: Flow<Int> = dataStore.data
    .map { prefs -> prefs[PrefKeys.FONT_SIZE] ?: 14 }

त्वरित जाँच

प्राथमिकता कुंजियों की अपनी समझ जाँचें।

पुनरावलोकन

आपने Preferences DataStore सेट अप किया:

  • शीर्ष-स्तरीय preferencesDataStore डेलीगेट के माध्यम से एक इंस्टेंस बनाएँ
  • stringPreferencesKey, booleanPreferencesKey आदि से टाइप की गई कुंजियाँ परिभाषित करें
  • कुंजियों को किसी object में एकत्रित करें और पहुँच को रिपॉज़िटरी में लपेटें
  • अनुपलब्ध कुंजियों के लिए हमेशा डिफ़ॉल्ट मान दें

अगला चरण: उन सेटिंग्स को वास्तव में पढ़ना और लिखना।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
36
पाठ
152

अक्सर पूछे जाने वाले प्रश्न

क्या “Preferences DataStore” पाठ निःशुल्क है?

हाँ — Android Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Preferences DataStore” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Preferences DataStore” में मैं क्या सीखूँगा?

की-वैल्यू सेटिंग रिएक्टिव तरीके से संग्रहीत करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Android Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Android Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Android Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“Preferences DataStore” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Android Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Android Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. DataStore बनाम SharedPreferences
  2. Preferences DataStore
  3. सेटिंग पढ़ना और लिखना
  4. Proto DataStore
← Android Academy पर वापस जाएँ