android - क्या मैं किसी सेवा के अंदर साझा प्राथमिकताओं से डेटा प्राप्त कर सकता हूं?




sharedpreferences android-service (4)

साझा प्राथमिकताओं तक पहुंच पाने के लिए आपको एक संदर्भ की आवश्यकता है। सबसे अच्छा तरीका है कि MyApplication को Application वर्ग के वंशज के रूप में बनाएं, वहां preferences को त्वरित करें और उन्हें अपने शेष एप्लिकेशन में MyApplication.preferences रूप में उपयोग करें:

public class MyApplication extends Application {
    public static SharedPreferences preferences;

    @Override
    public void onCreate() {
        super.onCreate();

        preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);

उदाहरण के लिए, यदि आपको कहीं और अपनी प्राथमिकताओं तक पहुँच की आवश्यकता है, तो आप इसे प्राथमिकताएँ पढ़ने के लिए कह सकते हैं:

String str = MyApplication.preferences.getString( KEY, DEFAULT );

या आप वरीयताओं को कुछ बचाने के लिए इसे कॉल कर सकते हैं:

MyApplication.preferences.edit().putString( KEY, VALUE ).commit();

(वरीयताएँ जोड़ने या बदलने के बाद कॉल commit() करना न भूलें!)

मैं एक Android एप्लिकेशन विकसित कर रहा हूं। मैं एंड्रॉइड 2.2 का उपयोग कर रहा हूं

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

मैं 2 सेवाओं (उपयोगकर्ता परिभाषित) का उपयोग कर रहा हूं, एक जीपीएस डेटा को कैप्चर करने के लिए और दूसरा सर्वर को भेजने के लिए।

यहाँ मेरा संदेह है

  • सेवा में, क्या हम साझा प्राथमिकताओं का उपयोग कर सकते हैं।

  • यदि हम एप्लिकेशन की किसी भी गतिविधि में साझा प्राथमिकताओं में कोई डेटा संग्रहीत करते हैं, तो क्या हम साझा प्राथमिकताओं की मदद से उस डेटा को सेवा में उपयोग कर पाएंगे?


हां, शिवकुमार, आप अपनी गतिविधियों में किसी भी प्रकार की सेवाओं में अपनी साझा प्राथमिकताओं का उपयोग कर सकते हैं।

समान प्रकार

SharedPreferences preferences = getSharedPreferences("<PrefName>",
            MODE_PRIVATE);

आप डिफ़ॉल्ट साझा प्राथमिकताएँ इंस्टेंस का उपयोग कर सकते हैं, जो आपके सभी Activity और Service वर्गों के लिए साझा किया जाता है, जिसे कॉल करकेManManager.getDefaultSodedPreferences PreferenceManager.getDefaultSharedPreferences(Context context) :

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

यह साधारण आदिम (जैसे बूलियन) या सीरियल करने योग्य वस्तुओं के भंडारण के लिए बहुत अच्छा है। हालाँकि, यदि आप बहुत अधिक स्थान डेटा कैप्चर कर रहे हैं, तो आप इसके बजाय किसी SQLite डेटाबेस का उपयोग करने पर विचार कर सकते हैं।



मैं इसका हल ढूंढता हूं।
किसी सेवा के अंदर हम साझा प्राथमिकताएँ प्राप्त करने के लिए निम्न विधि को कहते हैं

myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE);


उपरोक्त कोड में myapp एप्लीकेशन क्लास का एक ऑब्जेक्ट है जो एप्लीकेशन से लिया गया है





android-2.2-froyo