【发布时间】:2017-05-30 14:16:34
【问题描述】:
我正在使用带有 RxJava2 的新 Android 持久性库 Room。以下代码导致无限循环。如果我在第二个 observable 中注释掉更新用户的行,它工作正常。如果我把它留在那里,第一个 observable 的 onNext 方法将被一次又一次地调用。
当实体更新时,Room 是否会重新查询表?如果是这样,为什么要在同一个流上再次发布消息?这是预期的行为吗?是图书馆的bug吗?
val userDao = HeyHeyApp.database.userDao();
userDao.getAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ listOfUsers ->
if (!listOfUsers.isEmpty()) {
HeyHeyApp.currentUser = listOfUsers.first()
HeyHeyApp.currentUser.fcmDeviceId = getDeviceId()
Single.fromCallable({
HeyHeyApp.database.userDao()
.updateUser(HeyHeyApp.currentUser)
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ _ ->
})
}
})
【问题讨论】:
标签: android android-room