Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何取消rxJava请求的订阅_Java_Android_Rx Java2 - Fatal编程技术网

如何取消rxJava请求的订阅

如何取消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

我有下面的类,我想返回Subscription对象或其他东西,这样我就可以从引用Subscripte()方法的位置取消请求,但是Subscripte(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);

}
公共抽象类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();
}