非常に単純な 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 に設定されています。なぜですか? このことをもっと制御する必要があるので、サブスクライブしなくてもすぐに実行されません。解決にご協力ください。