2017-01-28 3 views
3

здесь случай с использованием реактивного программирования (с RxJava, например)понимания проблем RX философии (RxJava, RxJS, Rx ...) на андроид

  1. Существует объект пользователя с некоторыми свойствами (имя, фамилия) - наблюдаемая
  2. деятельность содержит 2 фрагмента как показывает имя текущего пользователя - абоненты
  3. пользователь изменяет (меняет название)

ли предположение верно го при отображаемом имени должно автоматически измениться, если наблюдаемый источник данных изменяется (если оба фрагмента подписываются на один и тот же объект пользователя)?

Из того, что я видел сейчас, все примеры о rxjava и андроиде сосредоточены на асинхронных вызовах и обработке потоков возвращаемых данных, вызванных/вызываемых по подписке. Что должно произойти, если наблюдаемый источник изменится? Предполагается, что абоненты должны быть вызваны или нет?

Взято отсюда: https://en.wikipedia.org/wiki/Reactive_programming

Например, в установке императивного программирования, а: = Ь + с будет означать, что в настоящее время присваивается результат Ь + с в момент выражение и позже значения b и c могут быть изменены без влияния на значение a. Однако в реактивном программировании значение a будет автоматически обновляться всякий раз, когда значения b и c изменяются, без повторения программы a: = b + c.

Есть ли примеры того, как настроить поведение с помощью rxJava, как описано в статье wikipedia?

+0

Я считаю, что вы ищете вид модели ведущего (ПМК) модель –

+0

I знать, что такое MVP. В центре внимания вопрос не внешний, а rx (rxjava) и понимание его. Пример 1 - 2 - 3 является теоретическим, чтобы лучше проиллюстрировать мое недоразумение. – ramden

ответ

2

Если вы создаете наблюдаемый, который обменивается обновлениями с объектом User (hint: subject/operator), и оба фрагмента получают одинаковое наблюдаемое от пользователя и подписываются на него, тогда они получат новую версию Пользователя.

Как пример Википедии, поскольку вы выражаете Ь и с наблюдаемыми это можно легко сделать с помощью combineLatest оператора:

Subject<Integer> sb; 
Subject<Integer> sc; 

Observable.combineLatest(sb, sc, (b, c) -> b + c) 
      .subscribe(outcome -> 
       System.out.println("Always up to date value here: " + outcome) 
     ); 
+0

Таким образом, субъекты по существу похожи на прокси-серверы, которые можно использовать из других мест, но не всегда вызывать наблюдаемые. Походит ли это -> эй, этот наблюдаемый подписывается здесь и там и там, теперь мне нужен предмет (чтобы не всегда называть тот же код, если он не нужен)? – ramden

+0

Вы правы в том, что они могут быть прокси, они оба являются наблюдателями и наблюдаемыми (см .: http://reactivex.io/RxJava/javadoc/io/reactivex/subjects/Subject.html). Но чтобы лучше понять их, просто посмотрите на сообщение в блоге @ akarnokd: http://akarnokd.blogspot.com/2015/06/subjects-part-1.html В этом примере я использовал тему потому что вы можете просто называть его 'onNext()' вручную, чтобы увидеть, как он работает сам по себе. Он может быть наблюдаемым . – MatBos

 Смежные вопросы

  • Нет связанных вопросов^_^