В чем разница между EventBus и RxJava?
Я смущен разницей между EventBus и RxJava в android. Мне нужно реализовать один из них для моей проблемы об уведомлении некоторых компонентов, когда некоторые изменения были сделаны, чтобы они могли обновить свое состояние.
Кроме того, я читал, что EventsBus стал устаревшим над RxJava, и я не знаю, верна ли эта информация или нет.
3 ответов
EventBus
и RxJava
различны по своей природе.
EventBus
Это просто bus
как следует из названия-он предоставляет механизм для подписки и публикации событий на "шину", без вас заботится о том, как выполняется проводка, что это" шина " на самом деле и т. д. В контексте Android,EventBus
- Это просто более простой способ разобраться с отправкой и получением Broadcast
сообщения с меньшим шаблоном.
RxJava
С другой стороны, гораздо более мощные чем. Да, вы можете подписываться и публиковать события, но у вас гораздо больше контроля над процессом - частотой, по которой все происходит и т. д. Главная сила RxJava
(на мой взгляд) заключается в том, что вы можете легко манипулировать публикуемыми данными, используя некоторые из его тонн operators
.
подводя итог - если вы заботитесь только о публикации некоторых событий и выполнении некоторых действий при получении - вам, вероятно, лучше использовать самый простой из двух, а именно какой-то Bus
, или даже старый добрый BroadcastReceiver
s. Если вы также выиграете от преобразования данных, обработки потоков или упрощенной обработки ошибок-перейдите к RxJava
подход. Просто имейте в виду, что RxJava
обычно имеет крутую кривую обучения, поэтому требуется некоторое время, чтобы привыкнуть к ее концепции.
Live @Vesko написал, RxJava и event bus отличаются по своей природе и могут служить для решения различных проблем. Тем не менее, есть несколько сценариев, в которых оба они могут решить одну и ту же проблему (хотя и с разной стоимостью), и это может быть причиной того, что многие люди путают эти два понятия.
RxJava концептуально похож на Android LiveData, который был выпущен не так давно, и чтобы лучше понять эти понятия, а также автобус событий, я предлагаю вам прочитать мой должность. В посте я перехожу к этим самым концепциям, описывая сценарии, в которых мы должны использовать один над другим, и плюсы и минусы использования одного, а не другого. Я думаю, это может быть полезно для вас:
Если вы хотите получить данные из sever и обновить пользовательский интерфейс, используйте RxJava + Refrofit. Если обновить пользовательский интерфейс или выполнить некоторую операцию без извлечения данных, EventBus достаточно.