Android में "एप्लिकेशन सेटिंग" करने का सबसे अच्छा तरीका क्या है? [बन्द है]


108

मैं Android एप्लिकेशन के लिए कुछ एप्लिकेशन सेटिंग्स (जैसे API का URL और परीक्षण के लिए कुछ सेटिंग्स) संग्रहीत करना चाहता हूं।

मैं ज्यादातर .NET डेवलपर के रूप में काम करता हूं, इसलिए मैं app.configइस उद्देश्य के लिए फ़ाइल का उपयोग करने के लिए उपयोग किया जाता हूं । Android में इसे करने का एक अच्छा तरीका क्या है?

जवाबों:


148

कई एप्लिकेशन विशिष्ट एप्लिकेशन या किसी गतिविधि की सेटिंग्स पर उपयोगकर्ता की प्राथमिकताओं को पकड़ने का एक तरीका प्रदान कर सकते हैं। इसका समर्थन करने के लिए, Android एपीआई का एक सरल सेट प्रदान करता है।

प्राथमिकताएं आमतौर पर नाम जोड़े हैं। उन्हें एक आवेदन में विभिन्न गतिविधियों में "साझा प्राथमिकताएं" के रूप में संग्रहीत किया जा सकता है (ध्यान दें कि वर्तमान में इसे प्रक्रियाओं में साझा नहीं किया जा सकता है)। या यह कुछ ऐसा हो सकता है जिसे किसी गतिविधि के लिए विशिष्ट रूप से संग्रहीत किया जाना चाहिए।

  1. साझा प्राथमिकताएँ: साझा प्राथमिकताओं का उपयोग सभी घटकों (गतिविधियों, सेवाओं आदि) द्वारा किया जा सकता है।

  2. गतिविधि ने प्राथमिकताएँ संभाला: इन प्राथमिकताओं का उपयोग केवल गतिविधि में किया जा सकता है और इसका उपयोग अनुप्रयोग के अन्य घटकों द्वारा नहीं किया जा सकता है।

साझा प्राथमिकताएँ:

साझा वरीयताओं को कक्षा की getSharedPreferencesविधि की सहायता से प्रबंधित किया जाता है Context। प्राथमिकताओं को एक डिफ़ॉल्ट फ़ाइल (1) में संग्रहीत किया जाता है या आप वरीयताओं को संदर्भित करने के लिए उपयोग किए जाने वाले फ़ाइल नाम (2) को निर्दिष्ट कर सकते हैं।

(1) फ़ाइल का नाम निर्दिष्ट करने पर आपको इस तरह का उदाहरण मिलता है

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEवरीयताओं के लिए ऑपरेटिंग मोड है। यह डिफ़ॉल्ट मोड है और इसका मतलब है कि बनाई गई फ़ाइल केवल कॉलिंग एप्लिकेशन द्वारा एक्सेस की जाएगी। अन्य दो समर्थित मोड हैं MODE_WORLD_READABLEऔर MODE_WORLD_WRITEABLE। में MODE_WORLD_READABLEअन्य अनुप्रयोग बनाई गई फ़ाइल को पढ़ सकता है, लेकिन यह नहीं बदल सकते। MODE_WORLD_WRITEABLEअन्य अनुप्रयोगों के मामले में भी बनाई गई फ़ाइल के लिए लिखने की अनुमति है।

(2) अनुशंसित तरीका फ़ाइल नाम निर्दिष्ट किए बिना, डिफ़ॉल्ट मोड द्वारा उपयोग करना है

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

अंत में, जब आपके पास वरीयताएँ होती हैं, तो यहां बताया गया है कि आप वरीयताओं से संग्रहीत मूल्यों को कैसे प्राप्त कर सकते हैं:

 int storedPreference = preferences.getInt("storedInt", 0);

वरीयता फ़ाइल ऑब्जेक्ट में मूल्यों को संग्रहीतSharedPreference.Editor करने के लिए उपयोग किया जाना है। वर्ग Editorका नेस्टेड इंटरफ़ेस है SharedPreference

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

संपादक भी तरह के तरीकों का समर्थन remove()और clear()फ़ाइल से वरीयता मूल्य नष्ट करने के लिए।

गतिविधि प्राथमिकताएं:

साझा प्राथमिकताओं का उपयोग अन्य एप्लिकेशन घटकों द्वारा किया जा सकता है। लेकिन अगर आपको अन्य घटकों के साथ वरीयताओं को साझा करने की आवश्यकता नहीं है और गतिविधियों को निजी प्राथमिकता देना चाहते हैं। आप getPreferences()गतिविधि की विधि की मदद से ऐसा कर सकते हैं । getPreferenceविधि का उपयोग करता getSharedPreferences()फ़ाइल प्राथमिकता नाम के लिए गतिविधि वर्ग के नाम के साथ विधि।

वरीयताएँ प्राप्त करने के लिए कोड निम्नलिखित है

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

मूल्यों को संग्रहीत करने का कोड भी समान है क्योंकि साझा वरीयताओं के मामले में।

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

आप डेटाबेस में गतिविधि स्थिति को संग्रहीत करने जैसी अन्य विधियों का भी उपयोग कर सकते हैं। नोट एंड्रॉइड में एक पैकेज भी होता है जिसे कहा जाता है android.preference। पैकेज अनुप्रयोग प्राथमिकताएँ यूआई को लागू करने के लिए कक्षाओं को परिभाषित करता है।

कुछ और उदाहरण देखने के लिए डेवलपर्स साइट पर एंड्रॉइड के डेटा स्टोरेज पोस्ट की जांच करें ।


1
धन्यवाद। ऐसा लगता है कि मुझे जो करने की ज़रूरत है वह एक एक्सएमएल फ़ाइल का उपयोग करने के लिए है कि मैं क्या कर रहा हूं (या शायद मैं एक्सएमएल को डेटा के रूप में तीव्रता से लोड करने के लिए उपयोग करता हूं), लेकिन वरीयता सामग्री मेरे प्रोजेक्ट के दूसरे भाग के लिए उपयोगी है।
टिम आलमंड

1
आप init के लिए xml फ़ाइल का उपयोग कर सकते हैं। आपको कुछ कॉल करने की आवश्यकता हैPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
पेंटियम

3
यह मार्गदर्शिका उपयोगी भी हो सकती है: developer.android.com/guide/topics/ui/settings.html
Hung Tran

1
+1। ध्यान में रखने के लिए बस एक छोटा सा। मूल्य को preferencesऑब्जेक्ट में सेट करने के बाद , कॉलिंग editor.apply()की सिफारिश की जाती है editor.commit()क्योंकि पूर्व पृष्ठभूमि में बचत को संभाल लेगा।
अनिंद्य चटर्जी

2
मैं यहाँ थोड़ा भ्रमित हूँ। शेयर्डप्रिफरेंस ऐप पर यूजर सेटिंग्स को स्टोर करने के लिए है, ऐप सेटिंग्स के लिए नहीं। उपयोगकर्ता (और मुझे भी) यह सोच रहा था कि ऐप सेटिंग्स को कहां स्टोर करना है, एपीआई यूआरएल या अन्य सेटिंग्स जो ऐप ठीक से काम करने के लिए उपयोग करते हैं।
albanx
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.