Отто никогда не был таким же функциональным, как EventBus от GreenRobot, например, без потоков, так что это хорошее избавление. И Отто был устаревшим в пользу RxJava - который является массовым излишеством для многих проектов (личное мнение).
Но для того, чтобы уменьшить использование отражения, GreenRobot EventBus 3.x is able to build an index in compilation time using APT, а не во время выполнения отражение.
http://greenrobot.org/eventbus/documentation/subscriber-index/
Index Предпосылки: Обратите внимание, что только @Subscriber методы могут быть проиндексированы, для которых абонент и класс события является общедоступным. Кроме того, из-за технических ограничений обработки аннотации Java, аннотации @Subscribe не распознаются внутри анонимных классов.
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"
}
}
И
EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus();
// Now the default instance uses the given index. Use it like this:
EventBus eventBus = EventBus.getDefault();
GreenRobot EventBus3 использует APT вместо отражения, AFAIK – EpicPandaForce
"Мы хотим, чтобы избежать накладных расходов отражения" Вы уверен, что это на самом деле проблема в y наше приложение? Когда мы (Квадрат) прототипировали код, сгенерированный Отто 4 года назад, число подписчиков должно было быть смехотворным, чтобы оно имело реальную разницу. И это было в дни Дальвика, а также до того, как они зафиксировали отражение аннотации на API 14+. Честно говоря, такие комментарии часто являются результатом оптимизации того, что на самом деле не является проблемой, и не было точно измерено. –
@ Джейк Уортон Мы этого не измерили. Как правило, я стараюсь избегать отражения, когда хочу оптимизировать производительность. Если у вас есть данные, которыми вы можете поделиться, я с удовольствием передумаю. – Ginandi