RxJava и случайные спорадические события на Android

Я хочу использовать RxJava так же, как использовал бы EventBus или Otto в Guava, но я не понимаю, как заставить его работать так, путь.

Вот сценарий: допустим, я хочу иметь кнопку в своем приложении для Android, и каждый раз, когда кнопка нажимается, я хочу, чтобы RxJava генерировал событие через мой Observable. Мне кажется, что у меня должна быть служба reregister после того, как она получит событие, и что активность также должна будет создать новую наблюдаемую.

Нравится, если я скажу

Observable.from(x)

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


person arinte    schedule 09.10.2013    source источник


Ответы (2)


Вы можете сделать что-то вроде этого (из rx.subjects.PublishSubject):

PublishSubject<Object> subject = PublishSubject.create();
// observer1 will receive all onNext and onCompleted events
subject.subscribe(observer1);
subject.onNext("one");
subject.onNext("two");
// observer2 will only receive "three" and onCompleted
subject.subscribe(observer2);
subject.onNext("three");
subject.onCompleted();

Если бы вы могли внедрить интерфейс Subject в Service и PublishSubject в Activity (или наоборот, в зависимости от того, что вы делаете), у вас может быть хорошее разделение проблем.

person Bobby Hargett    schedule 09.10.2013
comment
Это было в значительной степени так, но я думаю, что BehaviorSubject мне больше нравится. - person arinte; 09.10.2013

Недавно добавленный оператор refCount для ConnectableObservable добавляется в 0.14.3 также будет полезен для вас для этого типа использования.

Он поддерживает автоматическое подключение/отключение, когда несколько наблюдателей приходят и уходят.

person benjchristensen    schedule 09.10.2013