我有一个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调用。
我想要做一个并行呼叫:
单USERINFO = mDataManager.getUserInfo()
和呼叫stopSelf(startId);这两个电话完成后。
我该怎么办?
我试过RxJava Fetching Observables In Parallel 但这有点不同。
我想我必须使用.zip或.merge方法。但在我的情况下,一个方法调用返回Observable(事件列表)和第二个Single(一个UserInfo对象)。
我创造这可能是.ZIP方法的结果Z的结果类,但我不知道如何来填补它:
public class SyncResponse {
List<Event> events;
UserInfo userInfo;
...
}