Я смущен о различии между EventBus и RxJava в android. Мне нужно реализовать один из них для моей проблемы об уведомлении некоторых компонентов, когда были сделаны некоторые изменения, чтобы они могли обновлять свое состояние.
Кроме того, я прочитал, что EventsBus стал устаревшим по сравнению с RxJava, и я не знаю, истинна эта информация или нет.В чем разница между EventBus и RxJava?
ответ
EventBus
и RxJava
различны по своей природе.
EventBus
всего лишь bus
, как следует из названия, - это механизм, позволяющий подписываться и публиковать события на «шине», не заботясь о том, как выполняется проводка, что такое «шина» на самом деле и т. Д. В контекст Android, EventBus
- это просто более простой способ справиться с отправкой и получением сообщений Broadcast
с меньшим количеством шаблонов.
RxJava
, с другой стороны, намного эффективнее этого. Да, вы можете подписаться и публиковать события, но у вас есть гораздо больший контроль над процессом - частота, по которой все происходит и т. Д. Основная сила RxJava
(на мой взгляд) заключается в том, что вы можете легко манипулировать опубликованными данными , используя некоторые из его тонн operators
.
Подводя итог - если вы только заботитесь о публикации некоторых событий и выполнении некоторых действий при получении - вам, вероятно, будет лучше использовать простейший из двух, а именно какой-то Bus
или даже простой старый BroadcastReceiver
. Если вам также пригодится преобразование данных, обработка потоков или упрощенная обработка ошибок - перейдите к подходу RxJava
. Просто имейте в виду, что RxJava
обычно имеет крутую кривую обучения, поэтому требуется некоторое время, чтобы привыкнуть к ее концепции.
Спасибо за ваш ответ. Каковы недостатки использования EventBus? он ограничен по сравнению с RxJava? – HiddenDroid
@HiddenDroid Да, это так; вы можете просто пойти с EventBus, но, на мой взгляд, RxJava может многое предложить своим операторам. RxJava набирает популярность (на самом деле это не просто RxJava, реактивное программирование в целом), и вы найдете много библиотек, включенных в их API (например, Retrofit). На стороне примечание, это действительно удобно использовать, как только вы привыкнете к нему. – mewa
@HiddenDroid: Не могу придумать каких-либо особых недостатков «EventBus» - он всегда сводится к вашей задаче. Как я сказал в своем ответе - если вам нужно только отправить некоторые ответы на некоторые события, автобус выполнит работу отлично. Если ваша задача сложнее, - возможно, стоит изучить другие решения. Хитрость заключается в том, чтобы найти подходящий инструмент для задачи, поэтому вам не нужно вставлять себя в RxJava, если вам нужно всего лишь 1-2 BroadcastReceivers ... – Vesko
Насколько я знаю, они служат в несколько разных целях, но, в основном, RxJava может делать гораздо больше, чем EventBus –
Возможный дубликат [Android Pros & Cons: Event Bus и RxJava] (http://stackoverflow.com/ вопросы/30147877/android-pros-cons-event-bus-and-rxjava) –
Отто устарел, но GreenRobot нет. http://greenrobot.org/eventbus/ – Kuffs