Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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
如何处理Observable RxJava中的处理_Java_Android_Rx Java_Rx Android_Rx Java2 - Fatal编程技术网

如何处理Observable RxJava中的处理

如何处理Observable RxJava中的处理,java,android,rx-java,rx-android,rx-java2,Java,Android,Rx Java,Rx Android,Rx Java2,我正在实现Observable它应该只是从网络下载一个文件,分为多个部分 这是我的实现 private static class MultipartDownloadObservable extends Observable<String> implements Cancellable { @Override protected void subscribeActual(Observer<? super String> observer) {

我正在实现
Observable
它应该只是从网络下载一个文件,分为多个部分

这是我的实现

 private static class MultipartDownloadObservable extends Observable<String> implements Cancellable {
     @Override
        protected void subscribeActual(Observer<? super String> observer) {
            // Start loading
            subscriber = observer;
            progressBundle = new ProgressBundle<>();
            startDownloading();
        }

        @Override
        public void cancel() throws Exception {
            if (!lastDownloadingInfo.isFinish()) {
                okHttpClient.dispatcher().queuedCalls().stream().filter(call -> call.request().tag().equals(url)).forEach(Call::cancel);
            }
            if (subscriber != null) {
                subscriber.onComplete();
            }
        }
}
然而,它抛出了一个错误

java.io.InterruptedIOException: thread interrupted

我如何正确地执行处理
可观察的
?我已经尝试实现
Canceble
接口,但是没有调用
cancel
方法。

注意
java.io.InterruptedIOException:thread interrupted
不是来自rx。这是java.io的一个例外。对于您的
dispose()
操作,rxJava将被迫取消订阅,并在网络请求执行期间中断线程


您不能真正告诉可观察对象取消网络请求,因为rxJava不知道可观察对象内部运行的代码。您可以使用
doUnsubscribe
检查网络请求是否仍在运行,如果是取消,则在需要取消时取消订阅。

请注意
java.io.interruptedeException:thread interrupted
不是来自rx。这是java.io的一个例外。对于您的
dispose()
操作,rxJava将被迫取消订阅,并在网络请求执行期间中断线程


您不能真正告诉可观察对象取消网络请求,因为rxJava不知道可观察对象内部运行的代码。您可以使用
dounsubscribe
检查网络请求是否仍在运行,如果是取消,则在您想要取消时取消订阅。

没有理由扩展
Observable
。改用
Observable.create()
。一些经典的API通过中断异常来响应取消;您不能对此做太多,只能抑制它。@akarnokd,谢谢,但我需要捕获此异常以取消请求。没有理由扩展
Observable
。改用
Observable.create()
。一些经典的API通过中断异常来响应取消;您不能对它做太多,只能抑制它。@akarnokd,谢谢,但我需要捕获此异常才能取消请求
java.io.InterruptedIOException: thread interrupted