リスト内の一部のオブジェクトで失敗する可能性のある長時間実行タスクを実行しようとしていますが、再試行しましたが、オブザーバブルのリスト全体に再サブスクライブします。ネストされたサブスクリプションを実行できますが、間違っているようです。サブスクリプションをネストするよりも良い解決策はありますか?
これが私の実装です:
public Observable<ReportItemModel> deferReports() {
return Observable.defer(new Callable<ObservableSource<? extends ReportItemModel>>() {
@Override
public ObservableSource<? extends ReportItemModel> call() throws Exception {
return Observable.fromIterable(getReports())
.map(new Function<Report, ReportItemModel>() {
@Override
public ReportItemModel apply(Report report) throws Exception {
return report.getReport();
}
});
}
});
}
reportFactory.deferReports()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.retry()
.subscribe(new Observer<ReportItemModel>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ReportItemModel value) {
Log.d(TAG,value.toString());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});