Android filter正在阻止其他代码向API发送数据
我在evernote作业中使用RxJava向API发送一些数据。到目前为止,这个代码一直运行良好。问题出在Android filter正在阻止其他代码向API发送数据,android,retrofit,rx-java,jobs,evernote,Android,Retrofit,Rx Java,Jobs,Evernote,我在evernote作业中使用RxJava向API发送一些数据。到目前为止,这个代码一直运行良好。问题出在.filter中的某个地方,我认为它甚至没有进入getApiService().createReport(requestModel)方法,除非模型中有照片(那么report.getImages()不是null) public static Observable<Report> createReport(CreateReportModel model) { retu
.filter
中的某个地方,我认为它甚至没有进入getApiService().createReport(requestModel)
方法,除非模型中有照片(那么report.getImages()
不是null
)
public static Observable<Report> createReport(CreateReportModel model) {
return Observable.just(model)
.filter(report -> report.getImages() != null)
.flatMap(report -> {
return Observable.from(report.getImages())
.map(photoModel -> {
return photoModel;
})
.filter(photoModel -> photoModel.hasImage())
.filter(photoModel -> photoModel.getImage().exists())
.flatMap(photoModel -> uploadFile(photoModel)).toList();
})
.map(photoModels -> model)
.flatMap(requestModel -> {
return getApiService().createReport(requestModel)
.map(response -> {
return response;
});
});
}
如果在<代码>过滤器< /代码>中没有报告>将不会执行任何操作。请考虑删除< /P>
.map(photoModels -> model)
结束第一个可观察到的(您需要订阅它),然后从
Observable.just(model).flatMap(requestModel -> {
return getApiService().createReport(requestModel)
.map(response -> {
return response;
});
});
这将确保始终执行
getApiService
调用。那么到底是什么不起作用呢?你说得对,如果项目被过滤掉,则不会调用api服务。如果没有图像,则不应执行第一个.flatMap
(用于发送照片)但是第二个.flatMap
用于发送报告,它应该可以工作(不工作)。返回getApiService().createReport(requestModel)
从未调用过。我对RxJava有点陌生。你能帮助我订阅它的方式以及它将如何工作吗?最简单的方法就是将第一个块重写为普通java for Loop。我已经编辑了这个问题。我不明白。我如何重写第一个块。在编辑中有一个用于发送照片的函数,我可以在哪里调用该函数我不太明白你想说什么,请告诉我更多的信息。谢谢
.map(photoModels -> model)
Observable.just(model).flatMap(requestModel -> {
return getApiService().createReport(requestModel)
.map(response -> {
return response;
});
});