我試圖構建一個演示者,該演示者在一段時間內計算一些事件,僅在第一次加載時顯示加載,並在完成時更新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的工作原理,因爲我錯了! –