title: EventBus vs Callbacks, which to use when?
body: <p>I have many Activities which raise background tasks; the Activities will pass themselves in as having implemented a listener callback, so that the background tasks can raise an event on the Activities.  The Activities in turn can show something on the UI to indicate that a background activity passed or failed. </p>
  
  <p>Alternatively, I could use an <a href="https://github.com/greenrobot/EventBus">EventBus</a>, wherein I get the Activity to register itself as a listener/subscriber.  I can have a background tasks raise an event on the EventBus and the Activity listening to it can handle it.  </p>
  
  <p>What are the advantages of one over the other?  When would you use one over the other?  (Code cleanliness?  Performance? Caveats?)</p>
  
  <hr>
  
  <p>Follow up - I did end up using EventBus.  The code is definitely a lot cleaner and there aren't callbacks hanging out everywhere.  The IDE (IntelliJ) thinks that the <code>onEvent</code> methods are unused, so I created an annotation</p>
  
  <pre><code>@Target({ElementType.METHOD})
  public @interface EventBusHook {}
  </code></pre>
  
  <p>and placed it over my <code>onEvent</code> methods.  Then Alt+Clicked on it and asked IntelliJ to not treat it as unused.  </p>
  
  <pre><code>@EventBusHook
  public void onEvent(MyEventType myEventType){
  </code></pre>