2011-12-08 16 views
5

मेरे पास मेरे ऐप में एक सेवा है, क्योंकि कुछ अन्य ऐप्स भी हैं। मेरे द्वारा उपयोग किए जाने वाले कार्यों से, मैं सेटिंग्स (> चल रही) सेवाओं में अच्छी तरह से सेवाओं (और मार) सेवाओं को देख सकता हूं। लेकिन: मेरा नहीं ...एंड्रॉइड सेवा चल रही है, लेकिन यह सेटिंग्स में दिखाई नहीं दे रही है -> चल रही सेवाएं

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

startService(new Intent(this, HeartBeatService.class)); 

के साथ शुरू करते हैं और सेवा में, मैं भी उपयोग करें

startForeground(NOTIFY_RUNNING, runNotification); 

सेवा के उपयोग से मेरे अन्य ऐप्स की गतिविधियां बस एक सेवा की तरह काम करते हुए bindService() का उपयोग कर सेवा का उपयोग कर रही हैं।

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

बस: मैं इसे "देख" नहीं रहा हूं। मैंने START_STICKY लौटने के लिए स्टार्टकॉमैंड() पर सेवा को ओवरराइड करने का भी प्रयास किया, लेकिन कुछ भी नहीं बदला। मुझे पता है, यह IntentService में अधिलेखित नहीं किया जाना चाहिए।

या क्या मैं किसी भी तरह गलत सोच रहा हूं? इरादा सेवा "अलग" है?

धन्यवाद!

उत्तर

5

Android दस्तावेज़ संदर्भ से:

IntentService सेवाएं कि मांग पर अतुल्यकालिक अनुरोध (उद्देश्य के रूप में व्यक्त) संभाल के लिए एक आधार वर्ग है। ग्राहक startService (मंशा) कॉल के माध्यम से अनुरोध भेजते हैं; सेवा आवश्यकतानुसार शुरू की जाती है, कार्यकर्ता धागे का उपयोग करके प्रत्येक इरादे को बदले में रखती है, और जब यह काम से बाहर हो जाती है तो खुद को रोक देती है।

आपकी सेवा चलेगा जब यह एक आशय प्राप्त करता है और बंद हो जाता है एक बार यह कर किया जाता है कि आशय यह करने के लिए किया था क्या।

इसके अलावा, मैंने पाया है कि गतिविधियों के लिए बाध्य सेवाएं चल रही सेवाओं की स्क्रीन में दिखाई नहीं देगी।

एक बार जब आप बाइंडिंग को हटा देते हैं, तो वे दिखाई देते हैं।

+0

कभी-कभी जो लिखा है उसे पढ़ना और समझना चाहिए ... मुझे लगता है कि मैं बस पूरी तरह से गलत सोच रहा था। मैं क्लास को मानक सेवा में दोबारा कर दूंगा और ऑनस्टार्ट कमांड() से चलने वाले नए थ्रेड में बस अपने पुराने IntentService.onHandleIntent() को कॉल करूँगा। चलो देखते हैं कि क्या होता है ... बाद में रिपोर्ट करने के लिए ... – Oliver

+1

सेवा के बजाय इंटेंट सेवा के रूप में पुन: संक्रमित, प्लस अब ऐप सेवाओं में प्रदर्शित हो रहा है;) लेकिन मुझे सच में आश्चर्य है, क्योंकि ऑनस्टार्ट कॉमांड() को ओवरराइट करने के साथ START_STICKY को पूरा करना चाहिए था यह भी। कोई जानकारी नहीं। पॉइंटर के लिए वैसे भी धन्यवाद! – Oliver

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