SharedPreferences की मदद से आसान डेटा सेव करें

अगर आपके पास मुख्य वैल्यू का ऐसा छोटा कलेक्शन है जिसे आपको सेव करना है, तो SharedPreferences एपीआई का इस्तेमाल किया जा सकता है. SharedPreferences ऑब्जेक्ट एक ऐसी फ़ाइल पर ले जाता है जिसमें की-वैल्यू पेयर मौजूद होता है. साथ ही, इसमें पढ़ने के आसान तरीके बताता है और उन्हें लिखें. हर SharedPreferences फ़ाइल को फ़्रेमवर्क से मैनेज किया जाता है और निजी या शेयर किया जा सकता है.

इस पेज में बताया गया है कि डेटा को सेव करने के लिए, SharedPreferences API का इस्तेमाल कैसे करें सरल मान प्राप्त करें.

शेयर की गई प्राथमिकताओं के लिए हैंडल पाएं

शेयर की गई अपनी प्राथमिकता वाली नई फ़ाइल बनाई जा सकती है या कॉल करके किसी मौजूदा फ़ाइल को ऐक्सेस किया जा सकता है इनमें से कोई एक तरीका अपनाएं:

  • getSharedPreferences(): अगर आपको एक से ज़्यादा ऐसेट शेयर करनी हैं, तो इसका इस्तेमाल करें प्राथमिकता वाली फ़ाइलें, आपके नाम से पहचानी जाती हैं, जिन्हें आप पहले पैरामीटर. आप इसे अपने ऐप्लिकेशन में किसी भी Context से कॉल कर सकते हैं.
  • getPreferences(): अगर आपको ज़रूरत हो, तो Activity से इसका इस्तेमाल करें गतिविधि के लिए केवल एक शेयर प्राथमिकता फ़ाइल का उपयोग करने के लिए. क्योंकि इस गतिविधि से संबंधित एक डिफ़ॉल्ट शेयर की गई प्राथमिकता वाली फ़ाइल को हासिल करता है, तो नाम देने की ज़रूरत नहीं है.

उदाहरण के लिए, निम्न कोड साझा प्राथमिकताओं वाली फ़ाइल तक पहुंचता है रिसॉर्स स्ट्रिंग R.string.preference_file_key से पहचाना जाता है और उसे खोला जाता है निजी मोड का इस्तेमाल करके, ताकि फ़ाइल को सिर्फ़ आपका ऐप्लिकेशन ऐक्सेस कर सके:

Kotlin

val sharedPref = activity?.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE)

Java

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

शेयर की गई अपनी प्राथमिकता वाली फ़ाइलों का नाम रखते समय, आपको ऐसे नाम का इस्तेमाल करना चाहिए जो यूनीक हो पहचानने योग्य होता है. ऐसा करने का एक अच्छा तरीका यह है कि फ़ाइल के नाम की शुरुआत में आपका ऐप्लिकेशन आईडी. जैसे: "com.example.myapp.PREFERENCE_FILE_KEY" अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

इसके अलावा, अगर आपको गतिविधि के लिए, शेयर की गई सिर्फ़ एक फ़ाइल की ज़रूरत है, तो तो getPreferences() का इस्तेमाल किया जा सकता है:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

अगर ऐप्लिकेशन की सेटिंग सेव करने के लिए SharedPreferences एपीआई का इस्तेमाल किया जा रहा है, तो के बजाय getDefaultSharedPreferences() का इस्तेमाल करना चाहिए, शेयर की गई प्राथमिकता वाली फ़ाइल अपलोड करें. ज़्यादा जानकारी के लिए, देखें सेटिंग डेवलपर गाइड.

शेयर की गई प्राथमिकताओं में लिखें

शेयर की गई प्राथमिकताओं वाली फ़ाइल में लिखने के लिए, SharedPreferences.Editor बनाएं अपने SharedPreferences पर edit() कॉल करके.

उन कुंजियों और वैल्यू को पास करें जिन्हें आपको इन तरीकों से लिखना है: putInt() औरputString(). इसके बाद, apply() पर कॉल करें या बदलावों को सेव करने के लिए, commit() पर क्लिक करें. उदाहरण के लिए:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.apply();

apply(), मेमोरी में मौजूद SharedPreferences ऑब्जेक्ट को तुरंत बदल देता है, लेकिन एसिंक्रोनस तरीके से डिस्क पर अपडेट लिखता है. इसके अलावा, commit() का भी इस्तेमाल किया जा सकता है का इस्तेमाल किया जा सकता है. हालाँकि, commit() सिंक्रोनस है, इसलिए आपको इसे अपने मुख्य थ्रेड से कॉल करने से बचना चाहिए, क्योंकि यह आपके यूज़र इंटरफ़ेस (यूआई) को रोक सकता है रेंडरिंग.

शेयर की गई प्राथमिकताओं से पढ़ें

शेयर की गई प्राथमिकता वाली फ़ाइल से वैल्यू वापस पाने के लिए, कॉल करने के तरीके जैसे getInt() और getString(), आपकी वैल्यू के लिए कुंजी देते हैं और वैकल्पिक रूप से, कुंजी के मौजूद न होने पर वापस जाने वाला डिफ़ॉल्ट मान. इसके लिए उदाहरण:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);