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.
Alternatively, I could use an EventBus, 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.
What are the advantages of one over the other? When would you use one over the other? (Code cleanliness? Performance? Caveats?)
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 onEvent
methods are unused, so I created an annotation
@Target({ElementType.METHOD})
public @interface EventBusHook {}
and placed it over my onEvent
methods. Then Alt+Clicked on it and asked IntelliJ to not treat it as unused.
@EventBusHook
public void onEvent(MyEventType myEventType){