Java 为什么我会收到无法送达的异常

Java 为什么我会收到无法送达的异常,java,android,kotlin,rx-java2,rx-kotlin2,Java,Android,Kotlin,Rx Java2,Rx Kotlin2,在android应用程序中,过程是这样的:首先,我从本地SQLite获取注释,然后对每个注释进行Http调用。我使用复合一次性用品来存放所有一次性用品,并在活动被破坏时将其释放。代码如下所示: class MyActivity : AppCompatActivity(){ var compositeDisposable = CompositeDisposable() override fun onResume(){ updateDatabaseData()

在android应用程序中,过程是这样的:首先,我从本地SQLite获取注释,然后对每个注释进行Http调用。我使用复合一次性用品来存放所有一次性用品,并在活动被破坏时将其释放。代码如下所示:

class MyActivity : AppCompatActivity(){
    var compositeDisposable = CompositeDisposable()

    override fun onResume(){
        updateDatabaseData()
    }

    fun updateDatabaseData(){
        compositeDisposable.add(
            Observable.fromCallable{
                fetchDataFromDatabase()
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .flatMap{
                Observable.fromIterable(it)
            }
            .flatMap{
                getUpdateStateObservable(it) // make remote HTTP call for every note in the list from local DB
            }
            .subscribe()
        )
    }

    fun getUpdateStateObservable(note:Note):UpdatedNote{
        Observable.fromCallable(
             // make HTTP call and build some UpdatedNote
        )
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
    }

    fun fetchDataFromDatabase():List<Note>{
        // fetch data from local DB
    }
}
类MyActivity:AppCompatActivity(){
var compositeDisposable=compositeDisposable()
重写onResume(){
updateDatabaseData()
}
fun updateDatabaseData(){
compositeDisposable.add(
可观察的{
fetchDataFromDatabase()
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.平面图{
可观察的,可观察的
}
.平面图{
getUpdateStateObservable(it)//从本地数据库对列表中的每个注释进行远程HTTP调用
}
.subscribe()
)
}
fun getUpdateStateObservable(注意:注意):UpdatedNote{
可观察的(
//进行HTTP调用并生成一些更新的注释
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
fun fetchDataFromDatabase():列表{
//从本地数据库获取数据
}
}
这段代码一直运行良好,直到互联网连接断开。因此,每次HTTP调用方法
getUpdateStateObservable
时,都会抛出一个错误。有时它会导致
io.reactivex.exceptions.UndeliverableException
指向
getUpdateStateObservable
中发生网络错误的行。有时候不是。在发出HTTP请求时,我尝试使用一个线程池而不是一个线程池作为调度程序。single()。这很有效。但是,我想同时处理所有这些请求以加快处理速度


谢谢

您检查过这个吗?那不是我要找的。我知道在
getUpdateStateObservable
内部,每个HTTP调用都会导致异常。问题是当这些异常同时发生时(请参见subscribeOn(Schedulers.io())),会导致无法交付的异常。但是,当我切换到以调度程序的方式依次处理请求时,single()效果很好。为什么呢?