Подтвердить что ты не робот

Android-плюсы и минусы: Event Bus и RxJava

Я использую Event Bus в своих приложениях (например, greenrobot/EventBus). Но я нахожу некоторые недостатки в использовании Event Bus:

  • Выполнение цепочек задач затруднено
  • Множество классов для представления событий
  • Меньше четкого кода (ну, это еще можно проследить, но не так понятно)

Я изучаю новые методы решения этой проблемы. И я немного читал о RxJava и задаюсь вопросом, может ли это быть решением.

Итак, мои вопросы о RxJava (на основе того, что я читал недавно):

  • Может ли наблюдатель RxJava быть зарегистрированным в любое время? Поэтому не только при создании Observable. С EventBus это возможно, я могу подписаться в любое время, а не только при создании Observable.
  • Как вы обрабатываете двух или более издателей, публикующих однотипные события (например, навигационное событие)?
  • Тесное связывание издателя (ов) и подписчика означает, что я должен явным образом указывать издателя каждый раз. Поэтому я должен волноваться не только с типом событий, но и с создателями. С EventBus мне нужно только беспокоиться о типе событий и не создателей.
4b9b3361

Ответ 1

1) Когда у вас есть экземпляр Observable, вы можете подписаться на него в любое время и из любого потока, даже одновременно.

2) Мы обычно объединяем потоки нескольких наблюдаемых через Observable.merge() или используем сериализованный PublishSubject.

3) Если вы наблюдаете Наблюдаемый, могут быть десятки операторов и источников вверх по течению, но вы получите последовательный поток значений независимо от того, что. Вам нужно только ухватить Наблюдаемый, представляющий некоторый источник событий, и наблюдателю не нужно знать, было ли событие объединено, отфильтровано, совершилось кругосветное путешествие по сети и было отложено до прибытия в ваш метод onNext(). Естественно, вы можете реализовать или использовать некоторую услугу поиска, которая позволит вам отслеживать связь, но с RxJava взаимодействие обычно не является проблемой.