我有从sqlbrite db中进行选择,但由于某种原因,可观察到的可观察到oncomplete。
我的代码:
fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
createQuery(table_timeline, selectWDayRecords(dayTimestamp)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }
然后我尝试变体:
工作,但我需要保留订单,以便我不能使用flatmap
可观察的fromiterable(0..6)。 db.SelectdayTimeLinerEcords(Timestampofdayinweek(IT))} .buffer(7).subscribeon(schedulers.io())。observeon(androidschedulers.mainthread())。订阅{}
不工作(不交付结果,但我不知道为什么)
observable.fromiterable(0..6).concatmap { db.SelectdayTimeLinerEcords(Timestampofdayinweek(IT))} .buffer(7).subscribeon(schedulers.io())。observeon(androidschedulers.mainthread())。订阅{}
结果,我希望可以观察到t ...
的列表有人知道我在做什么错?
我对sqlbrite并不熟悉,但是createQuery
应该继续通知数据库更改。如果您只想获得一次值,则可以使用take()
操作员。
fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
createQuery(table_timeline, selectWDayRecords(dayTimestamp))
.mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }
.take(1)
然后您的concatMap
实现将起作用。