2017-12-23 13 views
1

Was ist der Unterschied zwischen subscribe() und subscribeWith() in RxJava2 in Android? Beide Funktionen werden verwendet, um einen Observer auf einem Observable zu abonnieren. Was ist der Hauptunterschied zwischen den beiden Funktionen? Wo Sie subscribe verwenden und wo Sie subscribeWith verwenden können. Wenn möglich, geben Sie bitte Codebeispiele an.Was ist der Unterschied zwischen subscribe() und subscribeWith() in RxJava2 in Android?

+0

Haben Sie lesen https://github.com/ReactiveX/ RxJava/wiki/Was ist-anders-in-2.0? –

+0

Ja, ich habe die Dokumentation gelesen und ich verstehe, dass sie das Konzept von Einweg eingeführt haben. Ich möchte einfach eine einfachere und leichter verständliche Erklärung. –

+1

Es heißt wörtlich: _ "Aufgrund der Reactive-Streams-Spezifikation gibt 'Publisher script' void zurück und das Muster selbst funktioniert nicht mehr in 2.0. Um dies zu beheben, wurde die Methode 'E subscribeWith (E subscriber)' hinzugefügt zu jeder reaktiven Basisklasse, die ihren eingegebenen Teilnehmer/Beobachter zurückgibt, wie es ist. "_ Das genau beantwortet Ihre Frage. Welchen Teil davon verstehst du nicht? –

Antwort

1

Seit 1.x Observable.subscribe(Subscriber) zurück Subscription, oft Benutzer die Subscription zu einem CompositeSubscription zum Beispiel hinzugefügt:

CompositeSubscription composite = new CompositeSubscription(); 

composite.add(Observable.range(1, 5).subscribe(new TestSubscriber<Integer>())); 

Aufgrund der Reaktiv-Streams Spezifikation, Publisher.subscribe kehrt Leere und das Muster von selbst nicht mehr funktioniert in 2.0. Um dies zu beheben, wurde das Verfahren E (E-Teilnehmer) jeder reaktiven Basisklasse hinzugefügt, die ihren Eingangsteilnehmer/Beobachter wie sie ist zurückgibt. Mit den beiden Beispielen vor, kann der 2.x-Code jetzt so aussehen, da ResourceSubscriber Geräte Disposable direkt:

CompositeDisposable composite2 = new CompositeDisposable(); 

composite2.add(Flowable.range(1, 5).subscribeWith(subscriber)); 

Quelle: What's different in [RxJava] 2.0

+0

Grundsätzlich verstehen, aber was ist mit der plötzlichen unerklärten Erscheinung von 'ResourceSubscriber'? Wollen Sie damit sagen, dass in Ihrem Beispiel der 'Teilnehmer' in' .subscribeWith (Teilnehmer) '' ResourceSubscriber' sein muss? –

Verwandte Themen