Android 如何使用RxJava等待两个改装请求列表的结束

Android 如何使用RxJava等待两个改装请求列表的结束,android,rx-java,retrofit2,Android,Rx Java,Retrofit2,首先,让我描述一下我的情况: 我想通过API注册新记录 我想通过API更新一些行 当所有这些请求结束时,我需要得到通知,以开始另一项任务 具体来说,我有两个ArrayList: ArrayList<Report> createdReports = myHelper.getOfflineCreatedReports(); ArrayList<Report> editedReports = myHelper.getOfflineEditedReports(); 我正在使

首先,让我描述一下我的情况:

  • 我想通过API注册新记录
  • 我想通过API更新一些行
  • 当所有这些请求结束时,我需要得到通知,以开始另一项任务
具体来说,我有两个
ArrayList

ArrayList<Report> createdReports = myHelper.getOfflineCreatedReports();
ArrayList<Report> editedReports = myHelper.getOfflineEditedReports();
我正在使用
flatMap
操作符为每个报告获取一个可观察值

但我不知道如何等到所有的请求都完成了

我正在考虑使用
zip
操作符

Observable.zip(createdReportsObs, editedReportsObs, new Func2<NewReportResponse, NewReportResponse, Boolean>() {
        @Override
        public Boolean call(NewReportResponse justOneResponse, NewReportResponse justOneResponse2) {
            return false;
        }
    });
Observable.zip(createdReportsObs、editedReportsObs、new Func2(){
@凌驾
公共布尔调用(NewReportResponse justOneResponse、NewReportResponse justOneResponse2){
返回false;
}
});
不幸的是,我看到了一些示例,其中使用
zip
创建成对的可观察对象

请告诉我可以使用什么操作符来实现它。或者如何以不同的方法使用rxJava来实现


提前谢谢你。

这是我的方式。可能不是最佳做法

Observable.merge(createdReportsObs, editedReportsObs)
          .toList()
          .flatMap(Observable::from)
          .xxx //Now they are completed, do what you want
          .subscribe();

您正在使用RXJava2吗?如果是这样,您可以使用新的completable api。这是假设您不需要知道任何服务器结果,只需要等待它们完成

Completeable.merge(createdReportsObs.toCompleteable(),
                   editedReportsObs.toCompleteable())
            .subscribe()

谢谢在
merge
之后直接使用
subscribe
有什么区别?您可以做的不仅仅是
doOnCompleted
doOnError
。此操作完成后,即使是
doOnNext
,也会在完成后调用。
Completeable.merge(createdReportsObs.toCompleteable(),
                   editedReportsObs.toCompleteable())
            .subscribe()