2 votes

Est-ce que l'EventBus de GreenRobot et de Guava utilise la réflexion ?

Notre application Android utilise actuellement Otto EventBus, qui utilise la réflexion. Nous voulons éviter l'overhead de la réflexion, mais garder la flexibilité. Est-ce que Le bus événementiel de Guava utiliser la réflexion ? Qu'en est-il GreenRobot 's ?

S'ils ne le font pas, utilisent-ils la génération de code ou quelque chose comme ça ?

4voto

Zhuinden Points 3074

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();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X