如何取消订阅发布主题和行为主题?
2022-09-01 03:29:17
在包下,您有这样的类,我想可以将其描述为一些可用的示例。subjects
PublishSubject
BehaviorSubject
Observables
如何取消订阅这些主题?没有方法和调用完全结束可观察性对吧?unsubscribe
onCompleted
在包下,您有这样的类,我想可以将其描述为一些可用的示例。subjects
PublishSubject
BehaviorSubject
Observables
如何取消订阅这些主题?没有方法和调用完全结束可观察性对吧?unsubscribe
onCompleted
A 是一个和一个,同时,它可以像普通可观察量一样取消订阅。主题的特别之处在于它是可观察量和观察者之间的桥梁。它可以通过释放它所观察到的项目来传递它们,也可以发出新的项目。主题是可观察的,就像承诺是期货的主题一样。Subject
Observable
Observer
以下是受试者系列的简要说明:
异步主体:仅发出源可观察对象的最后一个值
行为主体:当观察者订阅源可观察时,发出最近发出的项以及源可观察的所有后续项。
PublishSubject:在订阅时发出源 Observable 的所有后续项。
ReplaySubject:发出源 Observable 的所有项目,无论订阅者何时订阅。
官方文档附带了一些漂亮的大理石图表,使其更容易理解
主体本质上既是可观察的又是观察的。
可观察量本质上是一个具有函数的东西,该函数接受观察者并返回订阅。因此,例如,给定简单的可观察性:
Observable<Integer> observable = Observable.create(new Observable.OnSubscribeFunc<Integer>() {
@Override
public Subscription onSubscribe(Observer<? super Integer> observer) {
observer.onNext(3);
observer.onNext(2);
observer.onNext(1);
observer.onCompleted();
return Subscriptions.empty();
}
});
在这里,我们将订阅它,为每个整数打印出一行:
Subscription sub = observable.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
System.out.println(integer);
}
});
您可以通过致电取消订阅上述内容。sub.unsubscribe()
下面是一个 PublishSubject,它执行大致相同的操作:
PublishSubject<Integer> publishSubject = PublishSubject.create();
Subscription subscription = publishSubject.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
System.out.println(integer);
}
});
publishSubject.onNext(3);
publishSubject.onNext(2);
publishSubject.onNext(1);
您可以通过调用 .subscription.unsubscribe()