अगर आपको कुछ ही कीवर्ड-वैल्यू सेव करनी हैं, तो SharedPreferences
एपीआई का इस्तेमाल करें. SharedPreferences
ऑब्जेक्ट, की-वैल्यू पेयर वाली फ़ाइल को पॉइंट करता है और उसे पढ़ने और लिखने के आसान तरीके उपलब्ध कराता है. हर SharedPreferences
फ़ाइल को फ़्रेमवर्क मैनेज करता है. साथ ही, इसे निजी या शेयर किया जा सकता है.
इस पेज में, आसान वैल्यू को सेव करने और वापस पाने के लिए, SharedPreferences
API का इस्तेमाल करने का तरीका बताया गया है.
शेयर की गई प्राथमिकताओं के लिए हैंडल पाएं
आप एक नई शेयर की गई प्राथमिकता फ़ाइल बना सकते है या इनमें से किसी एक तरीके को कॉल करके किसी मौजूदा फ़ाइल को ऐक्सेस कर सकते है:
getSharedPreferences()
: अगर आपको नाम से पहचानी जाने वाली एक से ज़्यादा शेयर की गई प्राथमिकता फ़ाइलों की ज़रूरत है, तो इसका इस्तेमाल करें. इन फ़ाइलों को पहले पैरामीटर से तय किया जाता है. आप इसे अपने ऐप्लिकेशन में किसी भीContext
से कॉल कर सकते हैं.getPreferences()
: अगर आपको गतिविधि के लिए, सिर्फ़ एक शेयर की गई सेटिंग फ़ाइल का इस्तेमाल करना है, तोActivity
से इसका इस्तेमाल करें. यह गतिविधि से जुड़ी डिफ़ॉल्ट शेयर की गई प्राथमिकता फ़ाइल को वापस लाता है. इसलिए, आपको कोई नाम देने की ज़रूरत नहीं है.
उदाहरण के लिए, यह कोड शेयर की गई सेटिंग की उस फ़ाइल को ऐक्सेस करता है जिसकी पहचान रिसोर्स स्ट्रिंग R.string.preference_file_key
से की जाती है. साथ ही, इसे निजी मोड का इस्तेमाल करके खोलता है, ताकि फ़ाइल को सिर्फ़ आपका ऐप्लिकेशन ऐक्सेस कर सके:
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()
तरीके का इस्तेमाल करें:
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
अगर ऐप्लिकेशन की सेटिंग सेव करने के लिए SharedPreferences
एपीआई का इस्तेमाल किया जा रहा है, तो आपको अपने पूरे ऐप्लिकेशन के लिए डिफ़ॉल्ट शेयर की गई सेटिंग फ़ाइल पाने के लिए, getDefaultSharedPreferences()
का इस्तेमाल करना चाहिए. ज़्यादा जानकारी के लिए, सेटिंग डेवलपर गाइड देखें.
शेयर की गई प्राथमिकताओं में लिखें
शेयर की गई प्राथमिकताओं वाली फ़ाइल में लिखने के लिए, अपने SharedPreferences
पर edit()
को कॉल करके SharedPreferences.Editor
बनाएं.
आपको जिन कुंजियों और वैल्यू को लिखना है उन्हें इन तरीकों से पास करें:
putInt()
औरputString()
. इसके बाद, बदलावों को सेव करने के लिए apply()
या
commit()
पर कॉल करें. उदाहरण के लिए:
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()
जैसे तरीकों को कॉल करें. इसके लिए, अपनी पसंद की वैल्यू के लिए कोई कुंजी दें. अगर कुंजी मौजूद नहीं है, तो डिफ़ॉल्ट वैल्यू भी दी जा सकती है. उदाहरण के लिए:
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);