订阅者抽象类实际上有一个方法add,可以添加将取消订阅订阅的订阅.
def myObservable = Observable.create({ aSubscriber ->
val listener = {event ->
aSubscriber.onNext(event);
}
existingEventSource.addListener(listener)
// Adds a lambda to be executed when the Subscriber un-subscribes from your Observable
aSubscriber.add(Subscriptions.create(() -> existingEventSource.removeListener(listener)));
})
认为一个订阅者作为观察者订阅您的可观察;我们称之为订阅者.只要订阅者仍然订阅了Observable,Observable可以发出值.但是当订阅者未订阅时,应停止.但是,如果我们希望在订阅者取消订阅时收到通知,我们可以注册一个Action,以便在发生时运行.这是添加方法的用途.正如@dwursteisen在评论中提到的;您基本上注册一个将在订阅者取消订阅时执行的lambda.
也可以在不同的计划程序上取消订阅.请参阅rxanroid项目中的MainThreadSubscription,以了解如何实现这一点.
这是一个例子,说明如何使用它来取消订阅主线程
aSubscriber.add(new MainThreadSubscription() {
@Override
protected void onUnsubscribe() {
existingEventSource.removeListener(listener);
}
});