[英]How to unsubscribe from the rxJava request
我有以下類,我想返回Subscription對象或其他東西,以便可以從引用了subscribe()方法的地方取消請求,但是subscribe(observer)返回void! 我怎樣才能做到這一點?
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
您可能應該使用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;
}
然后,當您需要時:
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.