У меня есть SyncService.RxJava - параллельное выполнение двух вызовов API
@Override
public int onStartCommand(Intent intent, int flags, final int startId) {
Timber.i("Starting sync...");
...
RxUtil.unsubscribe(mSubscription);
mSubscription = mDataManager.syncEvents()
.subscribeOn(Schedulers.io())
.subscribe(new Observer<Event>() {
@Override
public void onCompleted() {
Timber.i("Synced successfully!");
stopSelf(startId);
}
@Override
public void onError(Throwable e) {
Timber.w(e, "Error syncing.");
stopSelf(startId);
}
@Override
public void onNext(Event event) {
}
});
return START_STICKY;
}
Наблюдаемые события = mDataManager.syncEvents() - вызов API.
Я хочу сделать параллельный вызов:
Single USERINFO = mDataManager.getUserInfo()
и вызвать stopSelf (startId); после завершения этих двух вызовов.
Как я могу это сделать?
Я попробовал RxJava Fetching Observables In Parallel , но это немного другой случай.
Я думаю, что мне нужно использовать .zip или .merge способ. Но в моем случае один вызов метода возвращает Observable (список в Events) и второй Single (один объект UserInfo).
Я создал класс г результат, который может быть результатом .zip метода, но я не знаю, как заполнить его:
public class SyncResponse {
List<Event> events;
UserInfo userInfo;
...
}