DataStore Kotlin: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

DataStore Kotlin: पूरी गाइड उदाहरणों के साथ

1. DataStore क्या है और इसकी आवश्यकता क्यों है

DataStore Google की एक लाइब्रेरी है जो Kotlin (और Android) ऐप्स में छोटे डेटा को स्टोर करने के लिए उपयोग की जाती है। यह पुरानी SharedPreferences की जगह लेती है और डेटा के साथ काम करने का एक अधिक सुरक्षित, एसिंक्रोनस और टाइप-सेफ तरीका प्रदान करती है। DataStore Kotlin Coroutines और Flow का उपयोग करती है, जो इसे रिएक्टिव प्रोग्रामिंग के साथ बने आधुनिक ऐप्स के लिए एक आदर्श विकल्प बनाता है।

DataStore की आवश्यकता क्यों है? SharedPreferences की मुख्य समस्या यह है कि यह डिस्क से सिंक्रोनस रीडिंग करता है, जो UI थ्रेड को ब्लॉक कर सकता है, और इसमें डेटा टाइप्स का समर्थन नहीं है (सब कुछ Set<String> के रूप में स्टोर होता है)। DataStore इन समस्याओं को हल करता है: सभी रीड और राइट ऑपरेशन एसिंक्रोनस होते हैं, और डेटा टाइप किए गए ऑब्जेक्ट्स (Protocol Buffers या Preferences के माध्यम से) में स्टोर होता है। इसके अलावा, DataStore स्वचालित रूप से सीरियलाइज़ेशन एरर्स को हैंडल करता है और डेटा के साथ काम करने के लिए एक साफ API प्रदान करता है।

यह लाइब्रेरी दो वेरिएंट में आती है: Preferences DataStore (सरल "की-वैल्यू" पेयर्स को स्टोर करने के लिए, जैसे SharedPreferences में) और Proto DataStore (Protocol Buffers के माध्यम से टाइप किए गए ऑब्जेक्ट्स को स्टोर करने के लिए)। इस लेख में हम Preferences DataStore पर ध्यान केंद्रित करेंगे, जो सबसे सरल और सबसे अधिक उपयोग किया जाने वाला वेरिएंट है।

2. इंस्टॉलेशन

DataStore Maven Central के माध्यम से वितरित की जाती है। Kotlin/Android प्रोजेक्ट में जोड़ने के लिए, build.gradle.kts (app मॉड्यूल) फ़ाइल में डिपेंडेंसी जोड़ें:

dependencies {
    // Preferences DataStore
    implementation("androidx.datastore:datastore-preferences:1.1.1")
    
    // यदि आप Proto DataStore का उपयोग कर रहे हैं
    // implementation("androidx.datastore:datastore-core:1.1.1")
    
    // Coroutines के समर्थन के लिए (आमतौर पर प्रोजेक्ट में पहले से मौजूद है)
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0")
}

यदि आप Groovy (build.gradle) के साथ Gradle का उपयोग कर रहे हैं, तो लाइन इस प्रकार होगी:

implementation 'androidx.datastore:datastore-preferences:1.1.1'

Gradle सिंक करने के बाद, लाइब्रेरी उपयोग के लिए तैयार है।

3. त्वरित शुरुआत — न्यूनतम काम करने वाला उदाहरण

यूज़र का नाम और एक काउंटर स्टोर करने के लिए एक सरल DataStore बनाते हैं।

import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.preferencesDataStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map

// Context के लिए एक्सटेंशन, जो DataStore बनाता है
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "user_settings")

// डेटा के लिए कीज़
val USER_NAME_KEY = stringPreferencesKey("user_name")
val COUNTER_KEY = intPreferencesKey("counter")

class UserPreferences(private val context: Context) {

    // Flow के रूप में यूज़र का नाम पढ़ना
    val userName: Flow<String?> = context.dataStore.data.map { preferences ->
        preferences[USER_NAME_KEY]
    }

    // Flow के रूप में काउंटर पढ़ना
    val counter: Flow<Int> = context.dataStore.data.map { preferences ->
        preferences[COUNTER_KEY] ?: 0
    }

    // यूज़र का नाम सेव करना
    suspend fun saveUserName(name: String) {
        context.dataStore.edit { preferences ->
            preferences[USER_NAME_KEY] = name
        }
    }

    // काउंटर बढ़ाना
    suspend fun incrementCounter() {
        context.dataStore.edit { preferences ->
            val currentCounter = preferences[COUNTER_KEY] ?: 0
            preferences[COUNTER_KEY] = currentCounter + 1
        }
    }

अनुशंसाएँ