2014-10-28 10 views
5

Ich benutze EventBus in meiner App und es ist sehr schön zu bedienen, es löst eine Menge Probleme und den Code zu vereinfachen, und die Verbreitung über die App mit allen Threads und alles ist fantastisch , aber ich fühle, dass ich vielleicht den Gebrauch von Ereignissen missbrauche.EventBus verwenden, Speicher und Architektur

Jetzt ist alles in Ordnung, ich teste in leistungsstarken Geräten und die App-Antwort ist wirklich nett, aber ich habe noch viel zu programmieren und ich beginne mich selbst zu fragen, wie sich das auf zu viele Ereignisse auswirken wird Auslösen über die ganze App.

Also die Frage ist für jeden, der Erfahrung mit dieser Bibliothek haben, wenn es einige Probleme mit vielen Ereignissen in meiner App gibt, wenn es einige bekannte Speicherprobleme im Zusammenhang mit der Verwendung dieser Ereignisse gibt. Ich versuche, es weise zu verwenden, aber es ist schwierig, es nicht viel in deine Architektur aufzunehmen, weil es eine wirklich nette Funktionalität ist. Wie auch immer, wenn du etwas zu dem Thema zu sagen hast, wird es nett sein, weil ich viel programmieren muss und ein Problem haben wird, wenn meine Architektur falsch ist und ich zurückgehen muss, um Änderungen vorzunehmen, weil einige Probleme mit den Ereignissen zusammenhängen.

PD. Ich spreche von nativen Android-App, mit vieler Vernetzung

Thx

+2

Meine Meinung nur, ich persönlich finde, dass ich Ereignisse viel einfacher missbrauche als ich das 'Listener-Observer'-Muster (oder, auf iOS, das Delegiertenmuster), obwohl sie sehr ähnlich sind. Es gibt nichts, was architektonisch mit Ereignissen zusammenhängt, aber man muss vorsichtig mit ihnen sein. Wenn Sie am Anfang so fühlen, gibt es einen Grund dafür. Ich würde versuchen, bei Listener-Observer zu bleiben, es sei denn, der einzige Weg, etwas zu erreichen, ist die Verwendung von Events. Nur um das zu wiederholen, das ist nur meine Meinung. – Adam

+0

Ja, meine Sorge ist, dass es knifflig und schwer zu pflegen und zu skalieren ist, denn jetzt benutze ich die volley-Bibliothek für meine Vernetzung und ich behandle alle meine Rückrufe mit Ereignissen und ich benutze Ereignisse auch für kritische Fehler/Probleme in meiner App, die die Ausführung stoppen müssen und in der gesamten App verbreitet werden müssen, wie zum Beispiel die Internet-Verbindung vor einem Web-Service-Aufruf fragen und wenn kein Dialog in der aktuell sichtbaren Aktivität/Fragment oder einem Toast angezeigt wird, aber ich finde mich geneigt, es mehr und mehr zu verwenden und deshalb frage ich – labreu

Antwort

4

Es ist kein Problem, viele Ereignisse in Ihrer App zu haben, solange Sie Änderungen an den Komponentenlebenszyklen folgen: Melden Sie sich für Ereignisse in onStart() an und entfernen Sie die Registrierung in onStop(). Wenn Sie dies tun, wird nur eine relativ kleine Teilmenge aktiver Komponenten für Ereignisse abonniert, was die gesamte Lösung schlank macht.

In meiner App hatte ich ein Problem mit der zentralen Singleton-Event-Bus-Instanz, deshalb verwende ich eine lightweight and fast event bus, die in der Lage ist, an eine Aktivität anzuhängen und deren Lebenszyklus zu respektieren. Damit kann ich pro Aktivität eine Businstanz haben, die sehr leicht ist.

+0

Ja, ich habe es wirklich gut mit dem Registrieren/Aufheben von Ereignissen in meinem Projekt zu tun, die EventBus-Bibliothek, die ich benutze, handle diesen Teil ziemlich gut, suchte deine Bibliothek und die Beispiele, es sieht gut aus. In der EventBus-Bibliothek von greenrobot wird der Event-Handler Singleton bereits von der Bibliothek zur Verfügung gestellt, so dass Sie sich nur registrieren müssen und das wars. Danke für die Antwort – labreu

2

Ich verstehe, was Sie sagen, und ich bin auch auf einer ziemlich große Code-Basis in unserem Unternehmen und wir verwenden Eventbus viel. Sie müssen nur vorsichtig sein, aber es kann ärgerlich sein, herauszufinden, welche Orte in der App für ein bestimmtes Ereignis abonniert sind. Wenn es mehrere Abonnements gibt, ist es nicht sehr lustig, durch die App zu fischen. Als Lösung hierfür nutze ich dieses erstaunliche Android Studio-Plugin für Otto Event Bus, das Sie nahtlos von und zu den Abonnenten bringt oder umgekehrt. Diese

https://github.com/square/otto-intellij-plugin

wird wirklich dazu beitragen, die Navigation zwischen den Veranstaltungen und Teilnehmern viel einfacher.

+0

Ja, es sieht wie ein nettes Werkzeug aus, aber ich benutze nicht Otto, sondern die greenrobot EventBus-Bibliothek: https://github.com/greenrobot/EventBus.Ich beschäftige mich mit der Menge an Anrufen und Callbacks, die versuchen, so gut wie möglich in einem großen Projekt organisiert zu sein, denn jetzt sieht es gut aus, mal sehen, wie Wartung und Skalierbarkeit in der Zeit aussehen. Danke für die Antwort, akzeptiere es nicht als korrekt, denn es wird nur für Otto benutzt, aber es ist ein nettes Werkzeug für andere, also hast du meine Stimme bekommen. – labreu