2016-06-15 18 views
1

Ich habe eine Anforderung, bei der ein Dienst in der Lage sein muss, eine Netzwerkanforderung abzubrechen, wenn alle Teilnehmer sich von einem bestimmten Ereignis abgemeldet haben. Ich benutze Greenrobot EventBus und soweit ich weiß, gibt es nichts eingebaut, das ein Ereignis sendet, wenn jemand sich abmeldet. Ich dachte, dass ich die Unregister-Methode des EventBus überschreiben und ein 'UnsubscribedEvent' veröffentlichen könnte, wenn es aufgerufen wird. Der Dienst kann dann dieses Ereignis abhören, und wenn er es empfängt, kann er hasSubscriberForEvent aufrufen, um zu überprüfen, ob er die Anforderung abbrechen soll. Klingt das vernünftig oder hat jemand bessere Vorschläge?Eventbus (greenrobot) -Ereignis, wenn der Teilnehmer nicht registriert ist

Antwort

1

Was Sie in der Frage angegeben haben, sollte gut funktionieren.

Alternativ zu vermeiden Komplikationen der Bibliotheks Methoden überschreiben und Unordnung Dinge unbewusst könnte man so gehen:

  1. einen Zähler halten, die Abonnenten registriert
  2. erhöhen/verringern den Zähler als würde Verfolgung und wenn neue Abonnements oder das aufheben der Registrierung sind (verwenden Sie eine Methode)
  3. im Innern der Gegen Tracking-Methode, ob der Wert Zähler 0 ist und die Netzwerkanforderung abbrechen (falls nicht abgeschlossen)