22
Event Bus Android Simplificado

Event Bus: Android Simplificado

  • Upload
    mickele

  • View
    82

  • Download
    2

Embed Size (px)

Citation preview

Event BusAndroid Simplificado

Componentes Android

Activity Service

Fragment Fragment Custom View

Comunicação Android

Activity Service

Fragment Fragment Custom View

Delegate Android

Activity

ServiceFragment

Fragment Custom View

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

Publish / Subscribe Papéis

Publisher Event Bus SubscriberEvent Event

Event Bus Android

ServiceFragment

Fragment Custom View

Event Bus

Activity

EventBus by greenrobot

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

Otto by Square

// 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

Caso de usoActivity

Fragment

Custom ViewFragment

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...