Одна наблюдаемая должна излучать предметы на основе других наблюдаемых излучаемых предметов, и обе наблюдаемые не связаны - PullRequest
0 голосов
/ 17 января 2019

У меня есть две разные наблюдаемые, которые ведут себя как

Наблюдаемое одно поведение -> Это будет создано, и один DisposableObserver будет подписан на него и реагирует на элементы, испускаемые Наблюдаемой.Это будет работать непрерывно, пока приложение не будет закрыто.

Наблюдаемое два поведения -> Это будет создано и будет подписано на другой Observer в другое время, и после подписки это должно генерировать значения, основанные на значениях, испускаемых Observable oneпосле наблюдаемого два подписывается.Как только задание выполнено, наблюдаемые две подписки будут удалены, но наблюдаемая должна продолжаться.

Как я могу сделать вторые наблюдаемые значения выбросов на основе излучаемых наблюдаемых единиц и утилизировать их после завершения?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если observableOne может иметь только одну подписку, вы можете сделать это несколькими способами. Самый простой способ - ввести Subject; он будет подписан на observableOne, а все остальные подписчики подпишутся на тему:

PublishSubject<DataType> observableOneStream = PublishSubject.create();

observableOne
  .subscribe( observableOneStream );
...
observableOneStream.subscribe( firstSubscription );
...
observableOneStream.subscribe( secondSubscription );
0 голосов
/ 17 января 2019

Вы можете flatMap значения из Наблюдаемой единицы в Наблюдаемой две.

observableOne.flatMap(obsOneValue -> observableTwo(obsOneValue))
        .subscribe(obsTwoValue -> {

        });

тогда у вас может быть метод Observable<ObsTwoValue> observableTwo(ObsOneValue obsOneValue), который создаст наблюдаемые два на основе выбросов наблюдаемого одного.

...