Event Bus Android Simplificado
Activity se torna God Object
Activity precisa implementar diversas interfaces
Excesso de cast e instance of
class GodActivity implements A, B, C, D, E, Fuck {}
Delegate :( Android
EventBus
// Create a bus
EventBus bus = new EventBus();
// Or use the default
EventBus bus = EventBus.getDefault();
// Publish
bus.post(new AnyEvent());
https://github.com/greenrobot/EventBus
// Register - onCreate, onStart
bus.register(this);
// Unregister - onDestroy, onStop
bus.unregister(this);
public void onEvent(AnyEvent e) {
[...]
}
public void onEventMainThread(AnyEvent e) {}
EventBus https://github.com/greenrobot/EventBus
// Sticky Publish
bus.postSticky(new AnyEvent());
// Sticky Register
bus.registerSticky(this);
EventBus https://github.com/greenrobot/EventBus
// Create a main thread bus
Bus bus = new Bus();
// Create an any thread bus
Bus bus = new Bus(ThreadEnforcer.ANY);
// Publish
bus.post(new AnyEvent());
Otto https://square.github.io/otto/
Otto
// Register - onCreate, onStart
bus.register(this);
// Unregister - onDestroy, onStop
bus.unregister(this);
@Subscribe
public void onAnyEvent(AnyEvent e) {
[...]
}
https://square.github.io/otto/
Otto
@Subscribe
public void onAnyEvent(AnyEvent e) {
[...]
}
@Produce
public AnyEvent produceAnyEvent() {
return AnyEvent.getLast();
}
https://square.github.io/otto/
Via Reflection
Fornece um Bus Default
Valor Anterior via *Sticky
Threading feita no Evento
OttoEventBus
Via Annotation
Gerenciamento Manual de Bus
Valor Inicial via @Produce
Threading feita no Bus
Crie Suvinil https://play.google.com/store/apps/details?id=com.basf.suvinil.crie
420 LOC
0 Interfaces
Eventos organizados
Delegate EventBus
750+ LOC
9 Interfaces
Interfaces fragmentadas
Referências
Google Developer Experts
https://medium.com/google-developer-experts/
Event-driven programming for Android (part I)
https://medium.com/google-developer-experts/event-driven-programming-for-android-part-i-f5ea4a3c4eab
Event-driven programming for Android (part II)
https://medium.com/google-developer-experts/event-driven-programming-for-android-part-ii-b1e05698e440
Event-driven programming for Android (part III)
Em breve...