Пример приложения: у меня есть две независимые части:
- Счетчик 1-10
- Список, который отображает все слова, загруженные из файла с таким количеством букв
Теперь это будет работать так:
- Счетчик будет
Observable<Integer>
, который испускает числа 1-10
- Для отображения списка будет использоваться
WordFileService.load(n)
для асинхронной загрузки списка слов
- После того, как список загружен, он должен уведомить счетчик для выдачи следующего номера
Другими словами, здесь есть цикл - исходный излучатель зависит от завершения целевого излучателя и наоборот.
Также рассмотрим более сложный случай, когда исходный излучатель зависит также от результата целевого излучателя. Например. скажем, что передатчик числа будет принимать количество испущенных слов и испускать следующее число с той же четностью (например, если следующее число, которое должно быть испущено, равно 5, а количество загруженных слов равно 36, оно пропустит 5 и испустит 6, с 6 mod 2 == 36 mod 2
).
Может быть даже проще думать в терминах любых многопользовательских игр пошаговых игр. Например. рассмотрим шахматы. Один игрок начинает, другой отвечает в зависимости от его хода, затем первый игрок отвечает в ответ на ход второго игрока и так далее. Таким образом, у нас было бы 2 Observable<PlayerMove>
или что-то в этом роде, которые имели бы круговые отношения.
Я предполагаю, что могу использовать BehaviorRelay из RxRelay , но я не уверен, что это лучший подход, учитывая обсуждение в этого вопроса .
Итак, мой вопрос: каков наилучший способ сделать это в RxJava (включая изменение рабочего процесса, если это лучшее решение)?