Wpis z mikrobloga

#java #androiddev #programowanie. Mam dziwny problem z EventBus.
Mam Activity, SerwisA i SerwisB.
Pomiedzy Activity a SerwisemA dwustronna komunikacja przebiega bez problemow (rejestruje EventBus w obu klasach, mam metody z ad. Subscribe, wysylam metoda post(E e) .

Problem zaczyna sie gdy chce uzyc SerwisuB. Moge w nim otrzymac dane za pomoca Subscribe, ale nie dziala post(E e).
Co moze wplywac na to, ze w jedym serwisie dziala a w innym nie?
Oczywiscie w debbugerze sprawdzilem ze jest wywolywana metoda post(E e); ( ͡° ͜ʖ ͡°)
  • 11
  • Odpowiedz
@fegwegw: To akurat prawda. EventBus sprowadza się do refleksji, przez co często eventy moga trafiać nie tam gdzie chcemy. Na dodatek metody nie są widoczne jako używane. A no i jakbyś chciał debugować takie eventy, to ma informacji skąd one przylatują. Dobrym rozwiązaniem jest wydzielenie interfejsu i za pomocą PublishSubject z RxJavy to robić.
  • Odpowiedz
@panryz: Powtarzam to już kolejny raz - wszystko można zrobić na dwa sposoby - dobrze i źle.
A argumenty w stylu:

Na dodatek metody nie są widoczne jako używane


to już absurd, i zalatuje to IDE driven developmentem. O, Eklips nie podpowiada czegoś, i biedny programista się gubi? Winą należy obarczać swój warsztat, a nie specyfikę architektury. To samo tyczy się debugowania - aplikacje wielowątkowe również debuguje się ciężej, czy to
  • Odpowiedz
@fegwegw: E tam. Refleksje akurat zazwyczaj nie sa dobra praktyka programistyczna. Jedna z istotnych rzeczy w programowaniu to readibility kodu, a takie rzeczy jak refleksje powoduja, ze kod jest mniej czytelny i trudniejszy do debugowania ( juz pomijajac to, ze sa powolne ). Do tego nie rozumiem tego "O, Eklips nie podpowiada czegoś, i biedny programista się gubi? ", czy dobry warsztat to nie taki, gdzie Twoj kod moze inny programista
  • Odpowiedz
Refleksje akurat zazwyczaj nie sa dobra praktyka programistyczna.


@rex1313: Bo tak wyczytałeś na blogu 'cleancodedlaopornych.prv.com.eu'? Potrafisz to sensownie uargumentować, czy tylko powtarzasz za tłumem: 'java jest powolna, refleksja jest zła, singleton to antywzorzec, hurr durr!' ?

Jeśli używasz refleksji, żeby w teście dobrać się do wartości prywatnego pola, to tak, jest to zła praktyka. Ale refleksji używa multum wyżej poziomowych zabawek, z których korzystasz na co dzień, i nawet nie pomyślisz,
  • Odpowiedz
@fegwegw: Tak, dokladnie - przeczytalem to na blogu cleancodedlaopornych.prv.com.eu. Nie, nie powtarzam za tlumem, ze Java jest powolna, refleksja jest zla, a singleton to antywrzocec. Refleksja jest zla praktyka ( zreszta tak samo jak i Singleton ), kiedy jest uzywana bez potrzeby ( bo tak jak mowilem przedtem: jest powolna, jest niebezpieczna, kod jest malo czytelny i trudny do rozbudowy i podatny na bugi, ktore trudno jest znalezc ). Wg mnie
  • Odpowiedz
Widze ze moj wpis wywolal male poruszenie ;)
@rex1313: polecisz jakies artykuly/prezentacje/ksiazki jesli chodzi o laczenie roznych komponentow w Androidzie? EventBus lubie, bo mozna zrobic cos "na szybko" i nie wymaga pisania dlugich litanii kodu, ale zdaje sobie sprawe ze to nie jest najlepsze rozwiazanie.
  • Odpowiedz