2016-03-28 13 views
6

मैं एंड्रॉइड के लिए एक संगीत स्ट्रीमिंग ऐप बना रहा हूं।"बैटरी सेवर" फीचर मेरी संगीत सेवा को मार रहा है

इस अनुप्रयोग में, मैं एक Service जो एक HTTP सर्वर से ऑडियो खेलने के लिए जिम्मेदार है। खेलने से पहले, मैं सुनिश्चित करता हूं कि startForeground() और आंशिक WakeLock प्राप्त करें, ताकि मेरी सेवा मारे नहीं जा सके। मुझे बस WifiLock भी मिलता है।

सेवा ठीक काम करती है ... जब तक मेरा फोन "बैटरी बचत मोड" पर नहीं है। जिस समय मैं बैटरी की बचत चालू करता हूं और अपने फोन को बिजली स्रोत से डिस्कनेक्ट करता हूं, मेरी सेवा आग से मारे जाती है!

दुर्भाग्यवश यह भी नहीं लगता कि onDestroy() कहा जाता है, इसलिए startForeground() से मेरी अधिसूचना दिखाई देती है, भले ही सेवा मर गई हो।

फ़ोन सैमसंग गैलेक्सी एस 6 है, जिसमें एंड्रॉइड 6.0.1 है।

दो सवाल:

  1. वहाँ एक रास्ता मैं सेवा बैटरी सेवर thingy के बावजूद जिंदा रख सकते है?
  2. यदि नहीं, तो मुझे पता है कि कम से कम जब मेरी सेवा मार दिया जाता है, ताकि मैं सफाई का एक सा कर सकते हैं चाहते हैं (अधिसूचना & आंतरिक सामान निकालने के लिए)।

कोई सुझाव?

+0

आप इस समस्या के लिए एक समाधान मिला? मेरे पास समान मामला है - डिवाइस और सटीक एंड्रॉइड संस्करण के आधार पर या तो ऐप या वाईफाई कनेक्शन सभी wakelocks को अनदेखा कर दिया जाता है – mhenryk

+0

मुझे इसके लिए कोई फिक्स नहीं पता है। यह सुनिश्चित नहीं है कि इसे एंड्रॉइड 7 में भी वास्तव में तय किया गया है ... मेरा ऐप केवल एकमात्र नहीं था: यहां तक ​​कि Google संगीत और स्पॉटिफ़ाई को भी समस्या थी। – aspyct

+0

एंड्रॉइड 7 अभी भी समस्या है। जानकारी के लिए धन्यवाद। – mhenryk

उत्तर

0

एक अलग प्रक्रिया एक अलग प्रक्रिया में आंशिक वाकेलॉक आयोजित करके यह संभव है।

android:process="process_name" 

(प्रलेखन: http://developer.android.com/guide/topics/manifest/service-element.html)

ध्यान दें कि आप एक बहु-प्रक्रिया वातावरण में SharedPreferences उपयोग नहीं करना चाहिए।

भी इस मुद्दे को देखें: https://code.google.com/p/android/issues/detail?id=193802

+1

यह दुर्भाग्य से काम नहीं करता है, जब तक कि मैं कुछ गलत नहीं कर रहा हूं। मैंने आवेदन और सेवा के लिए अलग प्रक्रिया डाली है, और अभी भी कोई सुधार नहीं है। कुछ ' '। क्या आप कुछ गलत खोज सकते हैं? – aspyct

+0

मुझे लगता है कि यह एक अलग प्रक्रिया में सेवा देने के लिए था –

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