我有一个非常简单的 RXJava 发射器。它实际上是一个 publishSubject,但它的工作是将整数转换为字符串,然后在订阅时更新 UI 元素。代码如下所示:
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 并且 UI 元素被设置为#4。为什么?我需要对这件事有更多的控制权,所以如果我没有订阅它,它就不会立即执行。请帮忙解决。