2014-10-28 23 views
5

Zaczynam używać EventBus w mojej aplikacji i jest naprawdę przyjemny w użyciu, rozwiązuje wiele problemów i upraszcza kod, a propagacja w całej aplikacji ze wszystkimi wątkami i wszystko jest fantastyczne , ale czuję, że mogę nadużywać korzystania z wydarzeń.Korzystanie z EventBus, pamięci i architektury

Na razie wszystko jest w porządku, testuję w zaawansowanych urządzeniach, a reakcja aplikacji jest naprawdę przyjemna, ale mam jeszcze wiele kodowania i zaczynam się zastanawiać, jak wpłynie to na zbyt wiele wydarzeń uruchamianie w całej aplikacji.

Pytanie dotyczy każdego, kto ma doświadczenie z tą biblioteką, jeśli występują problemy z posiadaniem wielu zdarzeń w mojej aplikacji, jeśli są jakieś znane problemy z pamięcią związane z korzystaniem z tych zdarzeń. Próbuję go użyć mądrze, ale trudno jest nie uwzględnić go w swojej architekturze, ponieważ jest to naprawdę fajna funkcja. W każdym razie, jeśli masz coś do powiedzenia na ten temat, będzie to miłe, ponieważ mam dużo kodowania do zrobienia i będzie to problem, jeśli moja architektura będzie zła i będę musiał wrócić, aby wprowadzić zmiany, ponieważ niektóre problemy związane z tymi wydarzeniami.

PD. Mówię o natywnej aplikacji dla Androida, z dużą ilością sieci

Thx

+2

Moja opinia, osobiście uważam, że moje nadużycia są znacznie łatwiejsze niż w przypadku wzorca "obserwatora-obserwatora" (lub, na iOS, wzorzec delegatów), mimo że są bardzo podobne. Nie ma nic złego w architekturze wydarzeń, ale musisz być z nimi ostrożny. Jeśli czujesz to na początku, to jest ku temu powód. Starałbym się trzymać "obserwatora-słuchacza", chyba że jedynym sposobem na osiągnięcie czegoś jest użycie zdarzeń. Chcę tylko powtórzyć, to moja opinia. – Adam

+0

Tak, obawiam się, że może to być trudne i trudne do utrzymania i skalowania, na razie używam biblioteki volley do pracy w sieci i obsługuję wszystkie moje wywołania zwrotne z wydarzeń i używam zdarzeń również do błędów krytycznych/problemy w mojej aplikacji, które muszą przerwać wykonywanie i muszą być propagowane w całej aplikacji, np. zapytaj o połączenie internetowe przed wywołaniem usługi sieciowej, a jeśli nie, pokaż ekran dialogowy w bieżącym widocznym działaniu/fragmencie lub Toast, ale jestem skłonny używać go coraz więcej i dlatego pytam: – labreu

Odpowiedz

4

To nie jest problem, mający wiele zdarzeń w aplikacji tak długo, jak postępować komponenty zmian w cyklu życia: zarejestrować się do wydarzeń w onStart() i wyrejestrować w onStop(). Jeśli to zrobisz, tylko subskrybent o stosunkowo małej liczbie aktywnych składników zostanie zasubskrybowany dla zdarzeń, co powoduje, że całe rozwiązanie jest szczupłe.

W mojej aplikacji miałem problem z główną instancją magistrali zdarzeń singleton, dlatego używam lightweight and fast event bus zdolnych do dołączenia do działania i respektowania jego cyklu życia. Dzięki niemu mogę mieć instancję magistrali na aktywność, która jest bardzo lekka.

+0

Tak, mam do czynienia z rejestracją/wyrejestrowaniem zdarzeń naprawdę dobrze w moim projekcie, biblioteka EventBus, której używam, dobrze sobie radzi, szukała twojej biblioteki i przykładów, wygląda ładnie. W bibliotece EventBus z greenrobot, singleton obsługi zdarzeń jest już dostarczany przez bibliotekę, więc musisz się tylko zarejestrować i to wszystko. Dzięki za odpowiedzi – labreu

2

rozumiem, co mówisz, a ja również pracuje na dość masywną kodzie w naszej firmie i używamy autobusu zdarzeń dużo. Musisz tylko zachować ostrożność, ale może to być denerwujące, aby dowiedzieć się, które miejsca w aplikacji subskrybują określone wydarzenie. Jeśli istnieje wiele subskrypcji, to przeprawa przez aplikację nie jest zbyt zabawna. Jako rozwiązanie tego, uwielbiam używać tej niesamowitej wtyczki do Android Studio dla Otto Event Bus, która bezproblemowo przeniesie Cię i wydarzenie do subskrybentów lub na odwrót.

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

To będzie naprawdę pomóc nawigację między zdarzeniami i abonentów łatwiejszych dużo.

+0

Tak, to wygląda na ładne narzędzie, ale nie używam Otto, ale biblioteki EventBus greenrobot: https://github.com/greenrobot/EventBus.Mam do czynienia z ilością połączeń i wywołań zwrotnych, które starają się być tak zorganizowane, jak tylko mogę w dużym projekcie, bo teraz wygląda dobrze, zobaczmy, jak wygląda konserwacja i skalowalność w czasie. Jeśli chodzi o odpowiedź, nie akceptuj jej jako poprawnego hasła, którego używasz tylko dla Otto, ale jest dobrym narzędziem dla innych, więc uzyskałeś prawo głosu. – labreu