2011-01-09 8 views
52

У меня есть служба и широковещательный приемник в моем приложении, но как я могу запустить службу непосредственно из широковещательного приемника? используяСтартовый сервис от BroadcastReceiver

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 (новый Intent (MusicService.ACTION_PAUSE, null, context, MusicService.class)); – cwhsu

+2

Это было очень полезно. –

51

должны быть такими:

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

обязательно добавить услуга ма nifest.xml

+0

Типичный элемент манифеста (идет под , на том же уровне, что и '):

2

Best Practice:

При создании умысел, особенно в то время как, начиная с BroadcastReceiver, не принимают это в качестве контекста. Возьмите context.getApplicationContext(), как показано ниже

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

использовать context из onReceive метода вашего BroadcastReceiver, чтобы начать свой сервисный компонент.

@Override 
public void onReceive(Context context, Intent intent) { 
     Intent serviceIntent = new Intent(context, YourService.class); 
     context.startService(serviceIntent); 
} 
Смежные вопросы