Я пытаюсь создать презентатор, который вычисляет некоторые события в течение некоторого периода времени, показывает загрузку только при первой загрузке и обновляет пользовательский интерфейс, когда это делается. Поскольку события могут быть обновлены несколькими способами (например, с помощью пользовательских настроек), мне нужно иметь возможность сообщить докладчику, что события были обновлены и что он должен обновить их снова. Вот что у меня есть прямо сейчас:
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
из Int. Я делаю onNext()
сразу после подписки, потому что хочу, чтобы данные обновлялись, как только я подпишусь на них.
Приведенный выше код творит чудеса в моих модульных тестах, а также только тогда, когда я запускаю его на устройстве с подключенным отладчиком. Если я просто запускаю его (без отладчика), он достигает части view.showLoading()
, но никогда не достигает части provider.calculateEventsBetween(TimePeriod.aYearFrom(firstDay)
, поэтому пользовательский интерфейс «зависает» при загрузке.
Любые идеи?