Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Event-Driven Architecture

Event-Driven Architecture

droidCon - Tunisia

Avatar for Slim BENHAMMOUDA

Slim BENHAMMOUDA

March 05, 2016

More Decks by Slim BENHAMMOUDA

Other Decks in Programming

Transcript

  1. Classic diagram Main Activity Fragment 4 Fragment 3 Fragment 2

    Fragment 1 Main Fragment Fragment 11 View Web service Service
  2. Event Bus Event Bus Fragment 4 Fragment 3 Fragment 1

    Service Main Fragment Fragment 11 Fragment 12 Main Activity Fragment 2
  3. Typical App Listener Views State Network DB Other Listener Listener

    Listener Logic Logic Logic Logic Event Source
  4. • Observables ◦ Contains all the heavy processing. ◦ Emit

    items (Objects, Strings, Integers etc.). ◦ Does not start emitting till someone subscribes. • Subscribers (Observers) ◦ Consumes data. • Manipulation operators ◦ Transforms ◦ Filters
  5. GREEN ROBOT Event Bus Less code, better quality and faster

    implementation https://github.com/greenrobot/EventBus 2.1
  6. 1. Implement any number of event handling methods in the

    subscriber, use the @Subscribe annotation on Class or event method: public void onEvent(AnyEventType event) {} 2. Register subscribers: eventBus.register(this); 3. Post events to the bus: eventBus.post(event); 4. Unregister subscriber: eventBus.unregister(this); STEPS
  7. 1. Implement any number of event handling methods in the

    subscriber: @Subscribe public void handleButtonPress(AnyEventType event) {} 2. Register subscribers: BusProvider.getInstance().register(this); 3. Post events to the bus: BusProvider.getInstance().post(event); 4. Unregister subscriber: BusProvider.getInstance().unregister(this); STEPS
  8. • Based RxJava : https://github.com/ReactiveX/RxJava Rx Android • RxAndroid provides

    bindings for Android. • ViewObservable & WidgetObservable provides bindings for views, clicks, scroll, input etc. • AndroidObservable provides facilities for working within the Android lifecycle. Bind to activity, fragment or even broadcasts. • AndroidSchedulers and HandlerThreadScheduler to be used on UI thread or Handler threads
  9. • Be careful about memory leaks, you have to manage

    register and unregister process Too good to be true :) • Can be confusing • Add some complexity especially for RxAndroid ⇒ Try them in your next project