2012-10-29 9 views
26

निश्चित रूप से यह एक मामूली सवाल है। अगर मैं एक Service शुरू, निम्नलिखित कोड का उपयोग कर क्या होता है:एंड्रॉइड सेवा पहले से चल रही है?

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

और उसके बाद मैंने गलती से ऊपर कोड याद है, जबकि Service अभी तक चल रहा है?

मुझे डर है कि startservice पर दूसरा कॉल एक ही समय में दो अलग-अलग प्रक्रिया निष्पादित करने के लिए एक नया Service बना सकता है।

+2

केवल सेवा का 1 उदाहरण हो सकता है, इसलिए आपको एकाधिक कॉल के बारे में चिंता करने की आवश्यकता नहीं है। – jsmith

+0

ठीक है, धन्यवाद। मुझे इस बारे में निश्चित नहीं था। – GVillani82

उत्तर

53

मुझे डर है कि शुरुआत करने के लिए दूसरी कॉल एक ही समय में दो अलग-अलग प्रक्रिया निष्पादित करने के लिए एक नई सेवा बना सकती है।

नहीं, कई मामलों में:

  • नहीं, यह एक नई सेवा नहीं बनाएगा। यदि सेवा पहले से चल रही है, तो इसे onStartCommand() के साथ फिर से Intent वितरित करने के लिए कहा जाएगा, लेकिन दूसरी प्रतिलिपि नहीं बनाई गई है।

  • नहीं, यह "एक ही समय में दो अलग-अलग प्रक्रिया निष्पादित नहीं करेगा", क्योंकि एक सेवा डिफ़ॉल्ट रूप से आपके शेष ऐप के समान प्रक्रिया में चलती है।

+1

मैं यूआरएल से वीडियो डाउनलोड करने के लिए एक इरादा सेवा का उपयोग कर रहा हूं। मैं वेबसाइट से प्राप्त करके सूची में वीडियो प्रदर्शित कर रहा हूं। जब कोई उपयोगकर्ता सूची तत्व पर क्लिक करता है, तो डाउनलोडिंग उद्देश्य सेवा में शुरू होती है। यदि उपयोगकर्ता किसी अन्य तत्व पर क्लिक करता है, तो पहला डाउनलोड समाप्त होने के बाद अगला डाउनलोड स्वचालित रूप से शुरू हो जाता है। यह वास्तव में मुझे भ्रमित कर रहा है। –

+1

@ एंकिटगर्ग: यह ठीक है कि 'IntentService' का व्यवहार कैसे किया जाना चाहिए। – CommonsWare

+1

तो क्या इसका मतलब है कि ऑनस्टार्ट कमांड नई सेवा कॉल रखता है (ढेर करता है) और पहली सेवा समाप्त होने पर इसे निष्पादित करता है? –