В чем разница между EventBus и RxJava?

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

3 ответов


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

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

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

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


Live @Vesko написал, RxJava и event bus отличаются по своей природе и могут служить для решения различных проблем. Тем не менее, есть несколько сценариев, в которых оба они могут решить одну и ту же проблему (хотя и с разной стоимостью), и это может быть причиной того, что многие люди путают эти два понятия.

RxJava концептуально похож на Android LiveData, который был выпущен не так давно, и чтобы лучше понять эти понятия, а также автобус событий, я предлагаю вам прочитать мой должность. В посте я перехожу к этим самым концепциям, описывая сценарии, в которых мы должны использовать один над другим, и плюсы и минусы использования одного, а не другого. Я думаю, это может быть полезно для вас:

когда и почему использовать LiveData


Если вы хотите получить данные из sever и обновить пользовательский интерфейс, используйте RxJava + Refrofit. Если обновить пользовательский интерфейс или выполнить некоторую операцию без извлечения данных, EventBus достаточно.