В RxJava 1 подписка на Observer вернула подписку, которая может быть отписана.Disposeable for Observer
В RxJava 2, подписывающийся на Наблюдатель, возвращает void и не может быть Disposeable. Как можно остановить эту «подписку»?
// v1
rx.Observable<Long> v1hot = rx.Observable.interval(1, TimeUnit.SECONDS);
rx.Observer<Long> v1observer = new TestSubscriber<>();
Subscription subscription = v1hot.subscribe(v1observer);
subscription.unsubscribe();
// v2
Observable<Long> v2hot = Observable.interval(1, TimeUnit.SECONDS);
Observer<Long> v2Observer = new TestObserver<>();
v2hot.subscribe(v2Observer); // void
EDIT: как обработать случай, когда мы используем наблюдатель, который сам по себе не реализует Disposable
, как BehaviorSubject
? Как и в этом примере:
// v1
rx.Observable<Long> v1hot = rx.Observable.interval(1, TimeUnit.SECONDS);
rx.Observer<Long> v1observer = rx.subjects.BehaviorSubject.create();
Subscription subscription = v1hot.subscribe(v1observer);
subscription.unsubscribe();
// v2
Observable<Long> v2hot = Observable.interval(1, TimeUnit.SECONDS);
Observer<Long> v2Observer = BehaviorSubject.createDefault(-1L);
v2hot.subscribe(v2Observer); // void
В этом конкретном случае, который работает. Но что, если это не реализует это? Вроде бы это тема (обновленный вопрос). –
Я обновил свой ответ. –
Спасибо! Интересно, почему они изменили это. Это очень неудобно. –