【发布时间】:2017-08-05 02:09:10
【问题描述】:
我正在尝试构建一个演示器,它在某个时间段内计算一些事件,仅在第一次加载时显示加载,并在完成后更新用户界面。因为可以通过多种方式(例如用户首选项)更新事件,所以我需要能够告诉演示者事件已更新并且必须再次刷新它们。这是我现在拥有的:
subject
.map<List<UpcomingRowViewModel>> {
provider.calculateEventsBetween(TimePeriod.aYearFrom(firstDay))
}
.doOnSubscribe {
view.showLoading()
}
.observeOn(resultScheduler)
.subscribeOn(workScheduler)
.subscribe { upcomingRowViewModels ->
view.display(upcomingRowViewModels)
}
subject.onNext(TRIGGER)
主题是 Int 的 PublishSubject。我在订阅后立即执行onNext(),因为我希望数据在订阅后立即刷新。
上面的代码在我的单元测试中产生了奇迹,而且只有当我在带有调试器的设备上运行它时。如果我只是运行它(没有任何调试器),它会到达view.showLoading() 部分,但永远不会到达provider.calculateEventsBetween(TimePeriod.aYearFrom(firstDay),因此 UI 会“卡住”加载。
有什么想法吗?
【问题讨论】:
标签: rx-java rx-kotlin publishsubject