2016-02-28 4 views
25

Я смущен о различии между EventBus и RxJava в android. Мне нужно реализовать один из них для моей проблемы об уведомлении некоторых компонентов, когда были сделаны некоторые изменения, чтобы они могли обновлять свое состояние.
Кроме того, я прочитал, что EventsBus стал устаревшим по сравнению с RxJava, и я не знаю, истинна эта информация или нет.В чем разница между EventBus и RxJava?

+2

Насколько я знаю, они служат в несколько разных целях, но, в основном, RxJava может делать гораздо больше, чем EventBus –

+2

Возможный дубликат [Android Pros & Cons: Event Bus и RxJava] (http://stackoverflow.com/ вопросы/30147877/android-pros-cons-event-bus-and-rxjava) –

+5

Отто устарел, но GreenRobot нет. http://greenrobot.org/eventbus/ – Kuffs

ответ

71

EventBus и RxJava различны по своей природе.

EventBus всего лишь bus, как следует из названия, - это механизм, позволяющий подписываться и публиковать события на «шине», не заботясь о том, как выполняется проводка, что такое «шина» на самом деле и т. Д. В контекст Android, EventBus - это просто более простой способ справиться с отправкой и получением сообщений Broadcast с меньшим количеством шаблонов.

RxJava, с другой стороны, намного эффективнее этого. Да, вы можете подписаться и публиковать события, но у вас есть гораздо больший контроль над процессом - частота, по которой все происходит и т. Д. Основная сила RxJava (на мой взгляд) заключается в том, что вы можете легко манипулировать опубликованными данными , используя некоторые из его тонн operators.

Подводя итог - если вы только заботитесь о публикации некоторых событий и выполнении некоторых действий при получении - вам, вероятно, будет лучше использовать простейший из двух, а именно какой-то Bus или даже простой старый BroadcastReceiver. Если вам также пригодится преобразование данных, обработка потоков или упрощенная обработка ошибок - перейдите к подходу RxJava. Просто имейте в виду, что RxJava обычно имеет крутую кривую обучения, поэтому требуется некоторое время, чтобы привыкнуть к ее концепции.

+0

Спасибо за ваш ответ. Каковы недостатки использования EventBus? он ограничен по сравнению с RxJava? – HiddenDroid

+2

@HiddenDroid Да, это так; вы можете просто пойти с EventBus, но, на мой взгляд, RxJava может многое предложить своим операторам. RxJava набирает популярность (на самом деле это не просто RxJava, реактивное программирование в целом), и вы найдете много библиотек, включенных в их API (например, Retrofit). На стороне примечание, это действительно удобно использовать, как только вы привыкнете к нему. – mewa

+2

@HiddenDroid: Не могу придумать каких-либо особых недостатков «EventBus» - он всегда сводится к вашей задаче. Как я сказал в своем ответе - если вам нужно только отправить некоторые ответы на некоторые события, автобус выполнит работу отлично. Если ваша задача сложнее, - возможно, стоит изучить другие решения. Хитрость заключается в том, чтобы найти подходящий инструмент для задачи, поэтому вам не нужно вставлять себя в RxJava, если вам нужно всего лишь 1-2 BroadcastReceivers ... – Vesko

 Смежные вопросы

  • Нет связанных вопросов^_^