2011-01-09 13 views
52

Tengo un Servicio y un Receptor de radiodifusión en mi aplicación, pero ¿cómo inicio el servicio directamente desde el Receptor de radiodifusión? utilizandoServicio de inicio de BroadcastReceiver

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

no funciona en un receptor de difusión, alguna idea?

Gracias!

EDIT:

Context.startService (..);

obras, se me olvidó la parte contexto

Respuesta

84

No se olvide

context.startService(..);

+2

Flawless answer. Lo solucionó con muy poco problema para leer. – Pachonk

+1

También consulte este enlace https://groups.google.com/forum/#!topic/android-developers/WVoO8kQCFF0 context.startService (nuevo Intent (MusicService.ACTION_PAUSE, null, context, MusicService.class)); – cwhsu

+2

esto fue muy útil. –

51

debería ser así:

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

asegúrese de agregar el servicio a ma nifest.xml

+0

Artículo de manifiesto típico (va por debajo de , en el mismo 'nivel' que '):

2

Mejor Práctica:

bien la creación de una intención especial, mientras que a partir de BroadcastReceiver, NO tome este como contexto. Tome context.getApplicationContext(), como a continuación

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

utilice el context del método de su BroadcastReceiveronReceive para iniciar su componente de servicio.

@Override 
public void onReceive(Context context, Intent intent) { 
     Intent serviceIntent = new Intent(context, YourService.class); 
     context.startService(serviceIntent); 
} 
Cuestiones relacionadas