Ich weiß, es gibt eine Reihe von Fragen zu diesem Thema, aber nichts scheint für mich zu arbeiten.Broadcast Receiver in Service nicht erhalten Intent
Ich habe einen Dienst, der Broadcasts von mehreren Aktivitäten empfängt, und ich differenziere sie mit verschiedenen Aktionen für jede Sendung erhalten.
Hier ist mein Code
MyService.java // Das ist Serviceklasse
private BroadcastReceiver SleepTimeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"SleepTimeReceiver onReceive is called");
if (intent.getAction().equals("sleepTimeFinished")) {
Log.d(TAG,"intents are matching");
}
}
};
@Override
public void onCreate() {
Log.d(TAG,"onCreate is called");
.
.
registerReceiver(SleepTimeReceiver,new IntentFilter("sleepTimeFinished"));
}
@Override
public void onDestroy() {
Log.d(TAG, "on destroy is called");
unregisterReceiver(SleepTimeReceiver);
}
MyActivity.java // Das ist Aktivitätsklasse
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG,"About to send broadcast");
Intent sleepTimeFinishedIntent = new Intent(this, MyService.class);
sleepTimeFinishedIntent.setAction("sleepTimeFinished");
sendBroadcast(sleepTimeFinishedIntent);
Log.d(TAG,"broadcast has been sent");
}
Ich habe versucht, auch hinzufügen der Empfänger in der Manifest-Datei, aber ohne Erfolg. Im Logcat kann ich die Protokolle aller Methoden sehen, mit Ausnahme der onReceive-Methode des Empfängers. Kann mir jemand dabei helfen? Dieses einfache Problem nervt mich seit Stunden.
wofür benötigen Sie 'BroadcastReceiver'? Warum benutzt du 'startService' nicht, um mit deinem' Service' zu "reden"? – pskink
Ich benutze den Dienst tatsächlich, um Musik zu spielen. Mit dieser Aktivität kann der Dienst wissen, wann die Wiedergabe der Musik basierend auf der Benutzerauswahl beendet werden soll. – Nikhil
so brauchen Sie es überhaupt nicht: entweder 'bindService' von Ihrer Aktivität (empfohlen) oder sprechen Sie mit Ihrem Service über' startService' Anrufe (nicht empfohlen) – pskink