我试图构建一个演示者,该演示者在一段时间内计算一些事件,仅在第一次加载时显示加载,并在完成时更新UI。由于事件可以通过多种方式更新(例如用户首选项),因此我需要能够告诉演示者事件已更新,并且必须再次刷新它们。以下是我现在所拥有的:onNext()永远不会在PublishSubject上调用
subject
.map<List<UpcomingRowViewModel>> {
provider.calculateEventsBetween(TimePeriod.aYearFrom(firstDay))
}
.doOnSubscribe {
view.showLoading()
}
.observeOn(resultScheduler)
.subscribeOn(workScheduler)
.subscribe { upcomingRowViewModels ->
view.display(upcomingRowViewModels)
}
subject.onNext(TRIGGER)
主题是诠释的PublishSubject
。我在订阅后立即执行onNext()
,因为我希望在订阅它们后立即刷新数据。
上面的代码在我的单元测试中可以创造奇迹,并且只有当我在调试器附带的调试器上运行设备时也是如此。如果我只是运行它(没有任何调试器),它会到达view.showLoading()
部分,但不会是provider.calculateEventsBetween(TimePeriod.aYearFrom(firstDay)
,因此UI会因加载而“卡住”。
任何想法?
这样做的窍门!非常感谢你的回复。这在我的脑海里清除了很多哦API的工作原理,因为我错了! –