Otto n'a jamais été aussi bien pourvu en fonctionnalités que l'EventBus de GreenRobot - pas de modes de threading, par exemple, donc bon débarras. Et Otto a été déprécié au profit de RxJava - qui est massivement surdimensionné pour de nombreux projets (opinion personnelle).
Mais afin de réduire l'utilisation de la réflexion, GreenRobot EventBus 3.x est capable de construire un index en temps de compilation en utilisant APT plutôt que la réflexion en cours d'exécution.
http://greenrobot.org/eventbus/documentation/subscriber-index/
Préconditions d'indexation : Notez que seules les méthodes @Subscriber peuvent être indexées pour lesquelles l'abonné ET la classe d'événement sont publics. De plus, en raison des limitations techniques du traitement des annotations de Java, les annotations @Subscribe ne sont pas reconnues dans les classes anonymes.
buildscript {
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
compile 'org.greenrobot:eventbus:3.0.0'
apt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
}
apt {
arguments {
eventBusIndex "com.example.myapp.MyEventBusIndex"
}
}
Et
EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus();
// Now the default instance uses the given index. Use it like this:
EventBus eventBus = EventBus.getDefault();