एक बटन मैं विधि startService(new Intent(currentActivity.this,MyService.class))
का उपयोग कर सेवा शुरू करना चाहते हैं पर क्लिक करने पर चल रहा है, लेकिन सेवा चल रही है अगर मैं रन सेवा पहले से ही चल से बचने के लिए इस विधि कॉल करने के लिए नहीं करना चाहते हैं फिर से चलाने की सेवा को रोकने के लिए कैसे। यह कैसे मुमकिन दोनों आशय सेवा और एक ही परियोजना में सेवा का उपयोग कर रहा है और दोनों के लिए एक ही शर्त लागू करना चाहते हैं।यदि पहले से ही एंड्रॉयड
उत्तर
एक सेवा केवल एक बार, तो आप startService(Intent)
कई बार फोन कर सकते हैं चलेंगे।
आप सेवा में onStartCommand()
प्राप्त होगा। इसलिए इस बात का ध्यान रखें।
स्रोत: ध्यान दें कि घोंसला नहीं है Context.startService()
को कई कॉल (हालांकि वे onStartCommand()
को अनेक संबंधित कॉल में परिणाम है), तो कोई बात नहीं यह कितनी बार शुरू कर दिया है एक सेवा एक बार रोक दिया जाएगा Context.stopService()
या stopSelf()
कहा जाता है; हालांकि, सेवाओं को stopSelf(int)
विधि का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि सेवा शुरू नहीं होने तक सेवा बंद नहीं हो जाती है।
में: http://developer.android.com/reference/android/app/Service.html विषय पर: सेवा जीवनचक्र
आपके त्वरित उत्तर के लिए धन्यवाद। आपकी टिप्पणी मुझे बहुत मदद करेगी लेकिन इन तरीकों को फिर से कॉल नहीं करना चाहती सेवा चल रही है। कोई अन्य विचार ??? –
@AtulBardwaj: 'स्टार्ट सेवा() '* हमेशा * ट्रिगर' ऑनस्टार्ट कॉमांड()' पर कॉल करता है। अवधि। इसलिए, या तो 'startService()' को कॉल न करें, या एक स्मार्ट 'ऑनस्टार्ट कमांड()' है जिसे कई बार बुलाया जा सकता है। – CommonsWare
@CommonsWare अपनी बात :) –
आपकी सेवा से आबद्ध; कॉल प्रारंभ करने वाले:
public static boolean isServiceRunning(String serviceClassName){
final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);
for (RunningServiceInfo runningServiceInfo : services) {
if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
return true;
}
}
return false;
}
मामले में इस कोड को काम केवल अगर मैं गतिविधि के लिए सेवा के लिए बाध्य करता है समझे ??? मुझे लगता है कि एक गतिविधि के लिए सेवा बाध्यकारी चलेगा जब तक एप्लिकेशन चल रहा है.कृपया टिप्पणी –
यह हमेशा काम नहीं होगा। यह खाते में "सेवा रोकना" नहीं लेता है। और यह मुख्य रूप से रनिंग सेवा यूआई दिखाने के लिए है। मैंने इसका इस्तेमाल किया है और यह हमेशा किटकैट में काम नहीं करेगा। इसके बजाय, आप हमेशा स्टार्ट सेवा का उपयोग कर सकते हैं और अपने कार्यों को करने के लिए क्रिएट और ऑनस्टार्ट कमांड पर सेवा का उपयोग कर सकते हैं। यह सही तरीका है। –
** ** बाउंड सेवा ** क्यों आवश्यक है? क्या हम सिर्फ ** प्रारंभिक सेवा ** का उपयोग नहीं कर सकते? –
उपयोग startService()
:
Intent bindIntent = new Intent(this,ServiceTask.class);
startService(bindIntent);
bindService(bindIntent,mConnection,0);
तो अगर आपकी सेवा काम कर रहा है की जाँच करने के, की तरह एक विधि का उपयोग करें। प्रारंभ सेवा onStartCommand()
फोन करेगा सेवा शुरू नहीं किया गया है, तो अभी तक यह onCreate()
कॉल करेंगे। onCreate()
में अपने चर शुरू करें और/या थ्रेड शुरू करें।
यह सही उत्तर है। ऑनक्रेट() को अनदेखा किया जाता है। – likejiujitsu
जब भी हम किसी भी गतिविधि से कोई सेवा शुरू करते हैं, तो एंड्रॉइड सिस्टम सेवा की ऑनस्टार्ट कमांड() विधि को कॉल करता है और यदि सेवा पहले से नहीं चल रही है, तो सिस्टम पहले क्रिएट() पर कॉल करता है, और फिर यह स्टार्ट कॉमांड() पर कॉल करता है।
तो इसका मतलब यह है कि एंड्रॉइड सेवा अपनी जीवन चक्र में केवल एक बार शुरू होती है और इसे तब तक चलती रहती है जब तक कि कोई अन्य क्लाइंट इसे फिर से शुरू नहीं करना चाहता है, तो केवल स्टार्ट कॉमांड() विधि हर समय लागू होगी।
- 1. यदि फ़ाइल पहले से ही विंडोज़
- 2. एंड्रॉयड: पहले से युग्मित कनेक्शन
- 3. एंड्रॉयड: windowSoftInputMode = "adjustResize" जब मैं पहले से ही है गतिविधि
- 4. toLower() यदि आप toupper मिल() पहले से ही
- 5. ऑटो में जावास्क्रिप्ट फ़ाइल शामिल है यदि पहले से ही
- 6. FB.init को पहले से ही
- 7. एक कॉलम बढ़ाएं यदि एक पंक्ति पहले से ही एक ही मान के साथ मौजूद है
- 8. जब मैं पहले से ही
- 9. LNK2005 (पहले से ही परिभाषित)
- 10. 'फ़ोल्डर्स' पहले से ही 'फ़ोल्डर'
- 11. संपत्ति पहले से ही 'ListView'
- 12. $ (दस्तावेज़) से पहले की घटनाएं। पहले से ही
- 13. पीएचपी सत्र कि पहले से ही
- 14. एंड्रॉयड: क्लिक पर स्पिनर आइटम शामिल नहीं है काम करता है, तो यह पहले से ही
- 15. स्पिनर onItemSelected पहले से ही चयनित
- 16. अपवाद पहले से ही StandardOutput धारा
- 17. जावास्क्रिप्ट पकड़ पैरामीटर पहले से ही
- 18. geting "विंडो पहले से ही ध्यान केंद्रित, का ध्यान केंद्रित लाभ अनदेखी: com.android.internal.view.IInputMethodClient $ स्टब $ प्रॉक्सी" एंड्रॉयड
- 19. अगर वस्तु पहले से ही एक सूची
- 20. डेटाटेबल पहले से ही किसी अन्य डेटासेट
- 21. System.Security.Cryptography.CryptographicException -object पहले से ही मौजूद
- 22. सर्वलेट के 'प्रतिक्रिया पहले से ही प्रतिबद्ध'
- 23. java.lang.Exception: पहले से ही कंसोल पर उपयोग
- 24. जब मैं पुराना संस्करण पहले से ही
- 25. रेल चेतावनी में: पहले से ही स्थिर
- 26. कॉल एक पहले से ही आबंटित स्मृति
- 27. getOutputStream() पहले से ही इस प्रतिक्रिया
- 28. आवश्यकताएँ जेएस को पहले से ही
- 29. org.apache.httpd: पहले से ही भरी हुई
- 30. एसक्यूएल त्रुटि सी # - पैरामीटर पहले से ही
संबंधित http://stackoverflow.com/questions/8019899/starting-a-service-multiple-times –