2010-07-22 11 views
58

अपने आवेदन में में लगातार डेटा, वहाँ कुछ आवेदन विशिष्ट सेटिंग, जो मेरे लिए उपलब्ध होना चाहिए रहे हैं, अगली बार जब अपने आवेदन जब शुरू होता है।मेकिंग एंड्रॉयड

दूसरे शब्दों में मैं चाहता हूं कि डेटा एक आवेदन चक्र के सत्रों में उपलब्ध हो।

इस डेटाबेस (SQLite) का उपयोग किए बिना प्राप्त किया जा सकता है।

+2

कृपया देव मार्गदर्शिका में [डेटा संग्रहण] (http://developer.android.com/guide/topics/data/data-storage.html) के बारे में पढ़ें। – Loxley

उत्तर

98

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

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

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

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

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

साझा वरीयताओं Context वर्ग के getSharedPreferences विधि की मदद से प्रबंधित कर रहे हैं। वरीयताओं को एक डिफ़ॉल्ट फ़ाइल (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); 

करने के लिए दुकान वरीयता फ़ाइलमें को महत्व देता है 0 ऑब्जेक्ट का उपयोग किया जाना चाहिए। EditorSharedPreference कक्षा का नेस्टेड इंटरफ़ेस है।

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 नामक एक पैकेज भी शामिल है। पैकेज एप्लिकेशन वरीयताओं UI को लागू करने के लिए कक्षाओं को परिभाषित करता है।

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

+1

विषय पर आपके विस्तृत व्याख्या के लिए Thanx :) – Girish

+0

उत्कृष्ट स्पष्टीकरण। धन्यवाद! – benmatth

+1

क्या स्थापना में लगातार बने रहने का कोई तरीका है? –

18

आप साझा उपयोग किसे करना चाहिए प्राथमिकताएं:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
prefs.edit().putString("my_pref", "my_value").commit(); 

और इसे पुनः प्राप्त करने:

String value = prefs.getString("my_pref", "default Value"); 

ये प्राथमिकताएं लगातार कर रहे हैं, और यह भी वरीयता गतिविधियों के साथ एकीकृत कर रहे हैं।

+0

Thanx। – Girish

+0

टाइपो: "प्राथमिकता प्रबंधक .getDefaultSharedPreferences (संदर्भ);" –

+0

@ थॉमस डेकॉक्स धन्यवाद, तय – SirDarius