У меня есть метод, который должен перезагрузить БД с помощью нескольких наблюдаемых. В конце концов, он должен вызывать метод setupPlace (selecetedPlace), но только один раз. Каждый наблюдаемый возвращает другой объект (void, object, listOfObjects).RxJava объединить несколько наблюдаемых do sth после всех сделанных
private void reloadDatabaseFromRest(final Place selectedPlace, final Event selectedEvent) throws ParseException {
Observable.concat(DatabaseManager.getInstance().clearDatabase(),
mPlaceUseCase.getPlacesListFromRestObservable()
.filter(places -> places != null && !places.isEmpty())
.doOnNext(places -> mPlaceUseCase.savePlacesToRepository(places)),
mPlaceUseCase.saveSelectedPlace(selectedPlace),
mEventUseCase.getEvenListObservableFromRest(selectedPlace.getId())
.doOnNext(eventList -> mEventUseCase.saveEventsToRepository(eventList)),
mEventUseCase.saveSelectedEventObservable(selectedEvent))
.takeLast(1)
.subscribe(o -> mSplashScreenUI.setupPlace(selectedPlace));
}
Но этот метод делает Подписаться() только на последнем наблюдаемым и другие не вызываются (я прав?). Я пробовал использовать фильтры, zip и делать глупые, если (o instanceOf ArrayList), но это неправильно. Может кто-то мне помочь, пожалуйста?
'concat' должны вызывать все наблюдаемые в порядке. –