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




sharedpreferences android-service android-2.2-froyo (5)

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

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

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

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

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

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


Answers

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

समान प्रकार

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

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

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

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


SharedPreference उदाहरण बनाने के दो तरीके हैं:

मामला एक:

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

केस 2:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

ध्यान दें कि यदि आप अलग-अलग स्थानों पर एक ही नाम (केस 1) या एक ही संदर्भ (केस 2) के साथ वरीयता बनाते हैं, तो यह अभी भी एक ही है, और डेटा साझा कर सकता है, जाहिर है।



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

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


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


मैं सिर्फ परेशानी वाले लोगों के लिए एस्किस के शानदार जवाब में जोड़ना चाहता था। (नोट: यह केवल 'प्रोजेक्ट' दृश्य के अंदर अलग-अलग निर्देशिकाओं की तरह काम करेगा और दुर्भाग्यवश 'एंड्रॉइड' दृश्य नहीं होगा।)

निम्नलिखित के साथ परीक्षण किया। BuildToolsVersion = 23.0.0 ग्रेड 1.2.3 और 1.3.0

इस तरह मैंने पहले से ही निर्मित परियोजना के साथ काम करने के लिए मेरा काम किया है।

  1. अपनी लेआउट निर्देशिका से सभी एक्सएमएल फाइलों की प्रतिलिपि बनाएँ, और उन्हें डेस्कटॉप पर या बैकअप के लिए कुछ निर्देशिका में डालें।
  2. संपूर्ण लेआउट निर्देशिका हटाएं (सुनिश्चित करें कि आपने चरण 1 से सब कुछ बैक अप लिया है !!!)
  3. राइट निर्देशिका पर राइट क्लिक करें और नई> निर्देशिका का चयन करें।
  4. इस नई निर्देशिका "लेआउट" नाम दें। (यह जो भी आप चाहते हैं हो सकता है, लेकिन यह 'खंड' निर्देशिका या 'गतिविधि' निर्देशिका नहीं होगी, जो बाद में आता है)।
  5. नई "लेआउट" निर्देशिका पर राइट क्लिक करें और नई> निर्देशिका का चयन करें। (यह उसमें एक्सएमएल फाइलों के प्रकार का नाम होगा, उदाहरण के लिए, 'टुकड़े' और 'गतिविधियां')।
  6. 'खंड' या 'गतिविधियां' निर्देशिका पर राइट क्लिक करें (नोट: यह 'खंड' या 'गतिविधियां' नहीं होना चाहिए जो कि मैं एक उदाहरण के रूप में उपयोग कर रहा हूं) और एक बार फिर नई निर्देशिका का चयन करें और इस निर्देशिका को नाम दें "लेआउट"। (नोट: इसे 'लेआउट' नाम दिया जाना चाहिए !!! बहुत महत्वपूर्ण)।
  7. आपके डेस्कटॉप पर बनाए गए बैकअप से नई 'लेआउट' निर्देशिका के अंदर इच्छित XML फ़ाइलों को रखें।
  8. जितनी चाहें उतनी कस्टम निर्देशिकाओं के लिए चरणों 5 ​​- 7 को दोहराएं।
  9. एक बार यह पूरा होने के बाद, अपने मॉड्यूल gradle.build फ़ाइल में जाएं और इस तरह एक स्रोतसेट परिभाषा बनाएं ... (सुनिश्चित करें कि 'src / main / res / layouts' और 'src / main / res' हमेशा नीचे दो हैं !! !! जैसा कि मैं नीचे दिखा रहा हूँ)।

    sourceSets {
        main {
            res.srcDirs =
                    [
                            'src/main/res/layouts/activities',
                            'src/main/res/layouts/fragments',
                            'src/main/res/layouts/content',
                            'src/main/res/layouts',
                            'src/main/res'
                    ]
        }
    }
    
  10. लाभ $$$$

लेकिन गंभीरता से .. इस तरह मैं इसे काम करने के लिए मिला। अगर किसी के पास कोई सवाल है तो मुझे बताएं .. मैं मदद करने की कोशिश कर सकता हूं।

चित्र शब्दों से अधिक मूल्यवान हैं।





android sharedpreferences android-service android-2.2-froyo