2012-02-01 15 views
8

मैं एंड्रॉइड के लिए अपेक्षाकृत नया हूं, इसलिए जो मैं पूछ रहा हूं वह स्पष्ट प्रतीत हो सकता है (हालांकि मैंने सभी समान शीर्षक वाले प्रश्न पढ़े हैं, और बड़े पैमाने पर खोज की है)। मुझे लंबी अवधि के लिए लगातार एक्सेलेरोमीटर की निगरानी करने की आवश्यकता है। दो दृष्टिकोण सुझाए गए हैं:एंड्रॉइड: फोरग्राउंड सर्विस बनाम wakeLock

1) आंशिक वेक लॉक प्राप्त करें जो पूरे समय एक्सेलेरोमटेर की निगरानी की जा रही है; और

2) अग्रभूमि सेवा में एक्सेलेरोमीटर की निगरानी करें।

पहला दृष्टिकोण बैटरी जीवन का उपयोग करने के लिए प्रतीत होता है। दूसरे दृष्टिकोण के परिणामस्वरूप एक ऐसी सेवा होनी चाहिए जो केवल शायद ही कभी मारे जाए, लेकिन मुझे यकीन नहीं है कि "शायद ही कभी" क्या मतलब है। किस दृष्टिकोण का उपयोग किया जाना चाहिए, और क्या ऐसे विकल्प हैं जिन पर मुझे विचार करना चाहिए?

+0

अरे डौग, आपको वह जानकारी कहां मिली? – Bush

+0

यदि अभी भी रुचि रखते हैं तो अलार्म प्रबंधक दृष्टिकोण आज़माएं: http://stackoverflow.com/questions/15451347/android-design-background-long-running-service-or-alarmmanager –

उत्तर

5

WakeLock और एक अग्रभूमि Service धारण करना वास्तव में संबंधित नहीं है और इसकी तुलना नहीं की जानी चाहिए कि कौन सी दिशा सर्वोत्तम है।

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

WakeLock बस सीपीयू को सोने से रोकता है जो फोन का उपयोग नहीं होने पर बैटरी को बचाने में मदद करता है।

अब, दोनों का संयोजन आपको जो चाहिए, उसे प्राप्त करने में आपकी सहायता करेगा लेकिन बड़ी उपयोगकर्ता लागत पर। मैं अपने फोन में एक ऐप नहीं चाहता कि सीपीयू लगातार चल रहा हो या सूचना अधिसूचना बार में लगातार दिखाई देने के लिए अधिसूचना आइकन (जो कि एक अग्रभूमि सेवा करता है)।

ध्यान रखें, अग्रभूमि मोड में एक सेवा शुरू करना की गारंटी नहीं देता है आपका ऐप नहीं मारा जाएगा। यह अभी भी शायद ही कभी हो सकता है।

आप यहां क्या हासिल करने की कोशिश कर रहे हैं? डिवाइस एक्सीलरोमीटर की निगरानी क्यों रखें? शायद आपको केवल तभी निगरानी करनी चाहिए जब आपके ऐप का Activity अग्रभूमि में है।

+2

सभी अग्रभूमि सेवाओं में जागने वाले ताले रखें। उदाहरण के लिए, संगीत ऐप्स में आंशिक वेक लॉक होता है। क्या यह सभी अग्रभूमि सेवाओं के साथ भी मामला है? – Basher51

1

मुझे बिल्कुल वही आवश्यकता और समस्या थी। मेरा मानना ​​है कि समाधान आंशिक वेक लॉक और एक अग्रभूमि सेवा दोनों का उपयोग करना है। एंड्रॉइड एक बैक लॉक रखने वाली पृष्ठभूमि सेवा को मारने की कोशिश नहीं करेगा, लेकिन इसे संसाधनों की आवश्यकता होने पर इसे मारने के लिए स्वतंत्र है और संभवतः बाद में इसे पुनरारंभ करें। यह बहुत से उद्देश्यों के लिए ठीक है लेकिन कम से कम मेरे मामले में यह पर्याप्त नहीं है। अग्रभूमि राज्य में सेवा देना एंड्रॉइड को बताने का तरीका है कि इसे मारना अस्वीकार्य है। हां, यह अभी भी चरम स्थितियों में हो सकता है लेकिन अब यह एपीआई अनुबंध का उल्लंघन होगा जबकि पृष्ठभूमि सेवा के साथ एंड्रॉइड इसे मारने के लिए स्वतंत्र है। इसलिए आपको शायद कोड होना चाहिए जैसे कि ऐसा कभी नहीं होगा लेकिन केवल यह जान लें कि यह एक संभव लेकिन शायद दुर्लभ त्रुटि है।

+0

क्या सभी अग्रभूमि सेवाओं में जागने वाले ताले होते हैं। उदाहरण के लिए, संगीत ऐप्स आंशिक जागने वाले ताले रखते हैं। क्या यह सभी अग्रभूमि सेवाओं के साथ भी मामला है? – Basher51

संबंधित मुद्दे