简体   繁体   English

如何退订rxJava请求

[英]How to unsubscribe from the rxJava request

I have the following class, I want to return Subscription object or something else so I can cancel the request from where I have referenced subscribe() method , but subscribe(observer) returns void! 我有以下类,我想返回Subscription对象或其他东西,以便可以从引用了subscribe()方法的地方取消请求,但是subscribe(observer)返回void! How can I do that? 我怎样才能做到这一点?

public abstract class MainPresenter<T> {
protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) {
observable.subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(observer);

}

[ New Update ] I used this way temporary, I am waiting for better solutions: [ 新更新 ]我使用这种临时方式,正在等待更好的解决方案:

    protected <T> DisposableMaybeObserver subscribe(final Maybe<T> observable,
                                                final Observer<T> observer) {
    return observable.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(new DisposableMaybeObserver<T>() {
                @Override
                public void onSuccess(T t) {
                    observer.onNext(t);
                }

                @Override
                public void onError(Throwable e) {
                    observer.onError(e);
                }

                @Override
                public void onComplete() {
                    observer.onComplete();
                }
            });
}

[ New Update 2 ] [![Screenshot][ https://i.stack.imgur.com/mioth.jpg]] [ 新更新2 ] [![截图] [ https://i.stack.imgur.com/mioth.jpg]]

[ New Update 3 ] [ [ 新更新3 ] [ 屏幕截图2 ] 1 ] 1

You should maybe use use subscribeWith : 您可能应该使用use subscribeWith

private Disposable mDisposable;

public abstract class MainPresenter<T> {
protected Disposable subscribe(Observable<T> observable, DisposableObserver<T> observer) {
mDisposable = observable.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(observer);

return mDisposable;

}

Then when you need : 然后,当您需要时:

if (mDisposable != null && !mDisposable.isDisposed()) {
    mDisposable.dispose();
}

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM