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

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

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

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

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

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

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

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

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

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

KotlinJava
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

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

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

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

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

KotlinJava
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with
(sharedPref.edit()) {
    putInt
(getString(R.string.saved_high_score_key), newHighScore)
    apply
()
}
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() जैसे तरीकों को कॉल करें. इसके लिए, अपनी पसंद की वैल्यू के लिए कोई कुंजी दें. अगर कुंजी मौजूद नहीं है, तो डिफ़ॉल्ट वैल्यू भी दी जा सकती है. उदाहरण के लिए:

KotlinJava

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)


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);