我有这个问题。我正在尝试将本地数据库与远程应用程序同步到我的 android 应用程序中。我正在创建上传本地创建的新信息的逻辑,服务器使用远程 ID 响应并将其保存在服务器中。为了存档这个,我使用了一个方法,它接受一个对象数组并返回一个 Observable,它为每个元素发出服务器的响应。像这样。
val dailyEntries = App.db.dailyEntryDao().getDailyEntriesCreated()
dailyEntries.sync(context) //Return an observable
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
val response = DailyEntry(it)//Creates a daily entry using
the response from the server
thread {
App.db.dailyEntryDao().update(response)
}
}, {
it.printStackTrace()
}, {
uploadEnclosures()
})
你怎么看,在 onSuccess 从当前 observable 调用另一个方法。它使用相同的逻辑并且显示在前面。
private fun uploadEnclosures() {
thread {
val enclosures = App.db.enclosureDao().getEnclosuresCreated()
enclosures.sync(context)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
val response = Enclosure(it)
thread {
App.db.enclosureDao().update(response)
}
}, {
it.printStackTrace()
}, {
uploadSmokeTest()
})
}
}
它继续与所有表。我们总是在当前 Observable 的 onSuccess 中执行下一个表的更新。这样做是因为我需要按特定顺序进行同步。
我的问题是,有没有办法将所有这些 Observable 合并为一个来执行单个订阅并控制每个 onNext 情绪?
感谢您的回答