在RxJava2中,subscribe()和subscribeWith()有什么区别?

6
在Android中,RxJava2中的subscribe()subscribeWith()有何区别?这两个函数都用于订阅Observable上的Observer。这两个函数之间的主要区别是什么?应该在哪里使用subscribe和subscribeWith?如有可能,请提供代码示例。

1
是的,我已经阅读了文档,我理解它们引入了可释放资源的概念。我只想要一个简单易懂的解释。 - ANUJ GUPTA
1
它的字面意思是:“由于反应流规范,Publisher.subscribe 返回 void,并且该模式在 2.0 中不再起作用。为了解决这个问题,已经向每个基本反应类添加了 E subscribeWith(E subscriber) 方法,该方法返回其输入的订阅者/观察者。” 这完全回答了你的问题。你不理解其中哪一部分? - Mark Rotteveel
1个回答

7

Since 1.x Observable.subscribe(Subscriber) returned Subscription, users often added the Subscription to a CompositeSubscription for example:

CompositeSubscription composite = new CompositeSubscription();

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

Due to the Reactive-Streams specification, Publisher.subscribe returns void and the pattern by itself no longer works in 2.0. To remedy this, the method E subscribeWith(E subscriber) has been added to each base reactive class which returns its input subscriber/observer as is. With the two examples before, the 2.x code can now look like this since ResourceSubscriber implements Disposable directly:

CompositeDisposable composite2 = new CompositeDisposable();

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

Source: What's different in [RxJava] 2.0


基本上理解了,但是 ResourceSubscriber 突然出现没有解释是怎么回事?你的意思是在你的例子中,.subscribeWith(subscriber) 中的 subscriber 必须是一个 ResourceSubscriber 吗? - Robert Lewis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接