У меня очень простой излучатель RXJava. Фактически это publishSubject, но его задача конвертировать целые числа в строки и обновлять элемент пользовательского интерфейса после его подписания. Код выглядит следующим образом:RxJava - единственное Наблюдаемое исполнение сразу - почему?
PublishSubject integerToStringEmitter = PublishSubject.create();
Subscription mysingle= Single.just(4).map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
return String.valueOf(integer);
}
}).subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
tv.setText(s);
}
});
// integerToStringEmitter.subscribe(); //it still emits even without this, why ?
Что я хочу случиться: для подписки только начинаются, когда я называю integerToStringEmitter.subscribe();
Что происходит в настоящее время: Как только я запускаю программу, onNext получает вызов, а элемент пользовательского интерфейса устанавливается на # 4. Почему? мне нужно больше контролировать эту штуку, чтобы она не выполнялась сразу без меня, даже подписавшись на нее. Помогите решить.
Он компилируется в порядке. Мне не хватало, чтобы не зацепить подписчика. Спасибо, хороший совет. – j2emanue