如何取消rxJava请求的订阅
我有下面的类,我想返回Subscription对象或其他东西,这样我就可以从引用Subscripte()方法的位置取消请求,但是Subscripte(observer)返回void! 我该怎么做如何取消rxJava请求的订阅,java,android,rx-java2,Java,Android,Rx Java2,我有下面的类,我想返回Subscription对象或其他东西,这样我就可以从引用Subscripte()方法的位置取消请求,但是Subscripte(observer)返回void! 我该怎么做 public abstract class MainPresenter<T> { protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) { ob
public abstract class MainPresenter<T> {
protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) {
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
公共抽象类MainPresenter{
受保护的一次性订阅(可观察的,可观察的){
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.签署(观察员);
}
[最新消息]
我暂时用这种方式,我在等待更好的解决方案:
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();
}
});
}
protected disposableobserver subscribe(最终可能可见),
最后观察员(观察员){
返回observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(新的可处置资产可能是观察员){
@凌驾
成功时的公共无效(T){
观察员:onNext(t);
}
@凌驾
公共无效申报人(可丢弃的e){
观察员:onError(e);
}
@凌驾
未完成的公共空间(){
observer.onComplete();
}
});
}
[最新消息2]
[![截图][
[最新消息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;
}
希望这有帮助。使用一个
DisposableObserver
并简单地返回它的实例。@akarnokd你能提供一个例子吗?你尝试过我的建议吗?验证你的Observable导入是一个io.reactivex而不是一个java.util。例如,查找Observable而不是Observator:)你使用了Observable而不是Observable,看看我的代码。奇怪,是吗尝试删除您的导入并重新导入?io.reactivex.observec我可以看到您的导入和build.gradle文件吗?
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}