Ich habe ein Service
und BroadcastReceiver
in meiner Anwendung, aber wie starte ich den Dienst direkt von der BroadcastReceiver
? Verwenden von
startService(new Intent(this, MyService.class));
funktioniert nicht in a BroadcastReceiver
, irgendwelche ideen?
BEARBEITEN:
context.startService (..);
funktioniert, ich habe den Kontextteil vergessen
android
broadcastreceiver
Samuel
quelle
quelle
sollte so sein:
Intent i = new Intent(context, YourServiceName.class); context.startService(i);
Stellen Sie sicher, dass Sie den Dienst zu manifest.xml hinzufügen
quelle
Verwenden Sie die Methode
context
fromonReceive
Ihres BroadcastReceiver , um Ihre Dienstkomponente zu starten.@Override public void onReceive(Context context, Intent intent) { Intent serviceIntent = new Intent(context, YourService.class); context.startService(serviceIntent); }
quelle
Beste Übung :
BroadcastReceiver
Nehmen Sie dies nicht als Kontext, während Sie eine Absicht erstellen, insbesondere wenn Sie damit beginnen . Nehmen Siecontext.getApplicationContext()
wie untenIntent intent = new Intent(context.getApplicationContext(), classNAME); context.getApplicationContext().startService(intent);
quelle
try { Intent intentService = new Intent(context, MyNewIntentService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(intentService ); } else { context.startService(intentService ); } } catch (Exception e) { e.printStackTrace(); }
quelle
quelle