如何取消订阅 rxJava 请求
How to unsubscribe from the rxJava request
我有以下 class,我想 return 订阅对象或其他东西,这样我就可以从我引用 subscribe() 方法的地方取消请求,但是 subscribe(observer) return无效!
我该怎么做?
public abstract class MainPresenter<T> {
protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) {
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
[新更新]
我暂时用这个方法,我在等待更好的解决方案:
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();
}
});
}
[新更新 2]
[![截图][https://i.stack.imgur.com/mioth.jpg]]
[新更新 3]
[]1
你也许应该使用 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;
}
然后当你需要的时候:
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
希望对您有所帮助。
我有以下 class,我想 return 订阅对象或其他东西,这样我就可以从我引用 subscribe() 方法的地方取消请求,但是 subscribe(observer) return无效! 我该怎么做?
public abstract class MainPresenter<T> {
protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) {
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
[新更新] 我暂时用这个方法,我在等待更好的解决方案:
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();
}
});
}
[新更新 2] [![截图][https://i.stack.imgur.com/mioth.jpg]]
[新更新 3]
[
你也许应该使用 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;
}
然后当你需要的时候:
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
希望对您有所帮助。