Ich habe einen sehr einfachen RXJava Emitter. Es ist eigentlich ein publishSubject, aber seine Aufgabe besteht darin, Integer in Strings umzuwandeln und ein UI-Element nachträglich zu aktualisieren, wenn es abonniert wird. Der Code sieht wie folgt aus:RxJava - single Observable sofort ausführbar - warum?
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 ?
Was ich mag geschehen: zum Bezug erst beginnen, wenn i integerToStringEmitter.subscribe nennen();
Was passiert gerade: Sobald ich das Programm starte, wird OnNext aufgerufen und das UI-Element wird auf # 4 gesetzt. Warum? Ich brauche mehr Kontrolle über dieses Ding, damit es nicht sofort ausgeführt wird, ohne dass ich es abonniere. Bitte helfen Sie zu lösen.
Es kompiliert gut.Ich fehlte, um den Abonnenten nicht zu ketten. Vielen Dank guten Rat. – j2emanue