matio
matio

Reputation: 427

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! 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.sstatic.net/mioth.jpg]]

[New Update 3] [Screenshot2]1

Upvotes: 2

Views: 4811

Answers (1)

Cochi
Cochi

Reputation: 2209

You should maybe use 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.

Upvotes: 8

Related Questions