【发布时间】:2017-05-09 01:59:43
【问题描述】:
我有一个 SyncService。
@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;
}
Observable events = mDataManager.syncEvents() 是一个 API 调用。
我想做一个并行调用:
单个用户信息 = mDataManager.getUserInfo()
并调用 stopSelf(startId);在这两个调用结束后。
我该怎么做?
我试过RxJava Fetching Observables In Parallel 但这有点不同。
我想我必须使用 .zip 或 .merge 方法。但在我的例子中,一个方法调用返回 Observable(事件列表)和第二个 Single(一个 UserInfo 对象)。
我创建了 z 结果类,它可能是 .zip 方法的结果,但我不知道如何填充它:
public class SyncResponse {
List<Event> events;
UserInfo userInfo;
...
}
【问题讨论】: