2011-01-09 20 views
52

से सेवा शुरू करना मेरे पास मेरे आवेदन में एक सेवा और प्रसारण रिसीवर है, लेकिन मैं ब्रॉडकास्ट रिसीवर से सीधे सेवा कैसे लॉन्च करूं?ब्रॉडकास्ट रिसीवर

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

कोई प्रसारण रिसीवर, किसी भी विचार में काम नहीं करता है?

धन्यवाद!

संपादित करें:

context.startService (..);

काम करता है, मैं संदर्भ हिस्सा भूल गया

उत्तर

84

मत भूलना

context.startService(..);

+2

निर्दोष उत्तर। इसे बहुत कम परेशानी पढ़ने के साथ तय किया गया। – Pachonk

+1

यह लिंक भी देखें https://groups.google.com/forum/#!topic/android-developers/WVoO8kQCFF0 context.startService (नया इरादा (MusicService.ACTION_PAUSE, शून्य, संदर्भ, MusicService.class)); – cwhsu

+2

यह बहुत उपयोगी था। –

51

इस तरह होना चाहिए:

Intent i = new Intent(context, YourServiceName.class); 
context.startService(i); 

जोड़ना सुनिश्चित करें एम की सेवा nifest.xml

+0

विशिष्ट मेनिफेस्ट आइटम ( के तहत 'के समान' स्तर 'पर चला जाता है): <रिसीवर एंड्रॉइड: नाम = "। आपका सेवा नाम"> –

2

बेस्ट प्रैक्टिस:

एक आशय BroadcastReceiver से शुरू विशेष रूप से, जबकि, बनाते समय न इस संदर्भ के रूप में ले लो। की तरह नीचे

Intent intent = new Intent(context.getApplicationContext(), classNAME); 
context.getApplicationContext().startService(intent); 
4

अपने BroadcastReceiver की onReceive विधि से context का उपयोग आपकी सेवा घटक शुरू करने के लिए context.getApplicationContext() लो ।

@Override 
public void onReceive(Context context, Intent intent) { 
     Intent serviceIntent = new Intent(context, YourService.class); 
     context.startService(serviceIntent); 
} 
संबंधित मुद्दे