SharedPreferences से कुछ कुंजी / मान युग्म कैसे निकालें?


90

SharedPreferences से कुछ कुंजी / मान युग्म कैसे निकालें? मैंने लगा दिया है और मुझे इसे प्रीफ़्स से निकालना है।

जवाबों:


218
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();

यहाँ संपादक साझाप्रदर्शन संपादक है।


11
इस उत्तर के लिए एक छोटा सा जोड़। एंड्रॉइड डॉक्यूमेंटेशन से: "यदि आप रिटर्न वैल्यू की परवाह नहीं करते हैं और आप अपने एप्लिकेशन के मुख्य थ्रेड से इसका उपयोग कर रहे हैं, तो इसके बजाय अप्लाई () का उपयोग करने पर विचार करें।"
श्रीदेवी J

3
@ सिलेश्वर, आपने आवेदन () वापस करने के लिए क्यों किया है? यह जानते हुए कि प्रलेखन लागू करने का उपयोग करने के लिए कहता है () जब तक हम वापसी मूल्य के साथ काम नहीं करना चाहते हैं, और न ही सवाल या जवाब उस मामले में फिट बैठता है
सलीम महबूबि

13

यह नोट करना महत्वपूर्ण है कि, जब तक आप कमिट () कॉल के रिटर्न वैल्यू के साथ कुछ करने की योजना नहीं बना रहे हैं, एसिंक्रोनस लागू () कॉल के बजाय सिंक्रोनस कमिट () कॉल का उपयोग करने का कोई कारण नहीं है।

ध्यान रखें कि यदि आप इसे मुख्य / UI थ्रेड से कॉल कर रहे हैं, तो UI पूर्ण होने तक अवरुद्ध है। इस आवेदन के लिए लगभग 5ms के रूप में लगभग 100ms के ऊपर ले जा सकते हैं। यह बहुत ज्यादा नहीं लग सकता है, लेकिन अगर एक आवेदन में लगातार किया जाता है, तो यह निश्चित रूप से जोड़ देगा।

इसलिए, जब तक आप ऐसा कुछ करने की योजना नहीं बना रहे हैं, उम्मीद है कि एक अलग सूत्र पर:

editor.remove(String key); 
boolean success = editor.commit();
if (!success) { 
    // do something 
}

आपको इसके बजाय ऐसा करना चाहिए:

editor.remove(String key); 
editor.apply();

मैं एक अच्छा (वास्तविक दुनिया) स्पष्टीकरण के लिए सब देख रहा हूँ जब प्रतिबद्ध बनाम उपयोग करने के लिए लागू होता है। यह स्पष्ट रूप से बिंदु को चलाता है।
XMAN

9
SharedPreferences.Editor.remove(key) 
commit();

1
यदि आप निकालने के तरीके से रिटर्न वैल्यू का उपयोग नहीं करते हैं, और आप अपने एप्लिकेशन के मुख्य थ्रेड से इसका उपयोग कर रहे हैं, तो इसके बजाय आवेदन () का उपयोग करने पर विचार करें।
कार्तिक श्रीवास्तव


3

यहां बताया गया है कि मैंने इस मुद्दे को कैसे निपटाया।

पहले मैंने एक साझा साझाकरण का एक उदाहरण बनाया

SharedPreferences mobilePreference;

तब मैंने इस साझाकरण का उपयोग किया

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);

यहां "in.bhartisoftwares.amit.allamitappsthree" मेरा पैकेज नाम है और मैं Context.MODE_PRIVATE का उपयोग कर रहा हूं, क्योंकि मैं इस साझा नाम के लिए केवल इस साझा वरीयता में हेरफेर करना चाहता हूं।

फिर मैं निम्न साझा किए गएPreference (मेरे साझाकरण की कुंजी को हटा रहा हूँ mobileString) निम्नानुसार है:

mobilePreference.edit().remove("mobileString").commit();

नीचे दिए गए कोड को पूरा देखें:

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
    mobilePreference.edit().remove("mobileString").commit();

1

जानकारी

बस चेक sharedprefक्लास को बढ़ाया जाता Mapहै, इसलिए removeविधि है

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();

यहाँ संपादक साझाप्रदर्शन संपादक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.