我有一個方法,應該使用多個observable將數據庫重新加載。畢竟它應該調用setupPlace(selecetedPlace)方法,但只能調用一次。每個observable都返回不同的對象(void,object,listOfObjects)。RxJava結合了多個可觀察事物做完所有完成
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));
}
但是這種方法只對最後一個observable做subsribe(),而其他的則沒有被調用(對嗎?)。我嘗試使用過濾器,壓縮和愚蠢如果(o instanceOf ArrayList)子句,但它是錯誤的方式。有人能幫助我嗎?
'concat'應該依次調用所有的觀察對象。 –