Kotlin Observable.fromCallable,订阅从未执行

Kotlin Observable.fromCallable,订阅从未执行,kotlin,google-sheets-api,reactivex,Kotlin,Google Sheets Api,Reactivex,我正在创建一个android应用程序,它读取并存储领域数据库中特定电子表格文件的内容。此应用程序正在使用Sheets API和reactivex。但是,当我运行它时,它总是以失败告终,即读取文件后没有存储任何内容。 根据调试结果,在订阅Observable期间更新的电子表格中存储内容的Map对象始终为空。所以,我猜这是因为Observable.fromCallable中定义的执行从未被调用。但是,我不知道如何修复它 以下是本应用程序的阅读程序代码。有人能帮我解决这个问题吗 另外,为了实施这个计划

我正在创建一个android应用程序,它读取并存储领域数据库中特定电子表格文件的内容。此应用程序正在使用Sheets API和reactivex。但是,当我运行它时,它总是以失败告终,即读取文件后没有存储任何内容。 根据调试结果,在订阅Observable期间更新的电子表格中存储内容的Map对象始终为空。所以,我猜这是因为Observable.fromCallable中定义的执行从未被调用。但是,我不知道如何修复它

以下是本应用程序的阅读程序代码。有人能帮我解决这个问题吗

另外,为了实施这个计划,我引用了下面网站上的大部分代码

class SheetsRepository(私有val SheetsApidatSource:SheetsApidatSource){
趣味阅读电子表格(电子表格ID:String,
电子表格范围:字符串):单个{
返回sheetsAPIDataSource.readSpreadSheet(电子表格ID,电子表格范围)
}
}
覆盖电子表格(电子表格ID:String,
电子表格范围:字符串):单个{
可观测回波
.fromCallable{
Log.d(“电子表格阅读”,“开始!”)
val响应=sheetsAPI.spreadsheets()
.values()
.get(电子表格ID、电子表格范围)
.execute()
response.getValues()
}.map{it[0].zip(it[1])}.flatMapIterable{it->it}
托利斯先生()
}

response.getValues()方法返回什么?根据文档,这将返回一个列表java.util.ListSo您确定这里有数据吗。map{it[0].zip(it[1])}.flatMapIterable{it->it}?我想是的。我使用的测试数据包含两列和相同数量的行。请在该行前后添加数据记录。使用doOnNext
private fun startReadingSpreadsheet(spreadSheetId : String, range : String) {
        dictMap.clear()

        readSpreadSheetDisposable =
            sheetsRepository.readSpreadSheet(spreadSheetId, range)
                .subscribeOn(Schedulers.computation())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnError { view.showError("Error!") }
                .subscribe(Consumer {
                    val pairs = it
                    pairs.map { dictMap[it.first.toString()] = dictMap[it.second.toString()]}
                    Log.d("Sheet :", it.toString())
                })
    }
class SheetsRepository(private val sheetsAPIDataSource: SheetsAPIDataSource) {
    fun readSpreadSheet(spreadsheetId : String,
                        spreadsheetRange : String): Single<MutableList<Pair<Any, Any>>> {
        return sheetsAPIDataSource.readSpreadSheet(spreadsheetId, spreadsheetRange)
    }
}
override fun readSpreadSheet(spreadsheetId: String,
                                 spreadsheetRange: String): Single<MutableList<Pair<Any, Any>>> {

        return Observable
            .fromCallable {
                Log.d("spread sheet reading", "started!")
                val response = sheetsAPI.spreadsheets()
                    .values()
                    .get(spreadsheetId, spreadsheetRange)
                    .execute()
                response.getValues()
            }.map { it[0].zip(it[1]) }.flatMapIterable { it -> it }
            .toList()
}