Database Observable不调用onComplete(sqlbrite-MapTooneOrderFault)
我已经从sqlbrite db中选择了,但由于某些原因,observable不调用onComplete 我的代码:Database Observable不调用onComplete(sqlbrite-MapTooneOrderFault),database,rx-java,rx-java2,sqlbrite,Database,Rx Java,Rx Java2,Sqlbrite,我已经从sqlbrite db中选择了,但由于某些原因,observable不调用onComplete 我的代码: fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) = createQuery(table_timeline, selectWDayRecords(dayTimestamp)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread
fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
createQuery(table_timeline, selectWDayRecords(dayTimestamp)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }
然后我尝试:
工作,但我需要保持秩序,所以我不能使用平面图
可观察的。从可观察的0..6.2平面图{
db.selectDayTimelineRecordstimestampOfDayInWeekit
}.buffer7.subscribeOnSchedulers.io.observeOnAndroidSchedulers.mainThread.subscribe{}
不工作不交付结果,但我不知道为什么
可观察的。从可观察的0..6{
db.selectDayTimelineRecordstimestampOfDayInWeekit
}.buffer7.subscribeOnSchedulers.io.observeOnAndroidSchedulers.mainThread.subscribe{}
因此,我想观察的列表的T
有人知道我做错了什么吗?我对SQLBrite不太熟悉,但createQuery应该一直通知数据库更改。如果只想获得一次值,则可以使用take运算符
fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
createQuery(table_timeline, selectWDayRecords(dayTimestamp))
.mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }
.take(1)
然后您的concatMap实现就可以工作了