我有两个可观察对象(简称为A和B)和一个用户.因此,订阅者订阅A,如果A上有错误,那么B(这是后备)就会启动.现在,每当A遇到错误B被称为罚款,但是A调用订阅者的onComplete(),所以B响应即使B执行成功,也永远不会到达订户.
这是正常行为吗?我认为onErrorResumeNext()应该继续流并在完成后通知订阅者,如文档中所述(https://github.com/ReactiveX/RxJava/wiki/Error-Handling-Operators#onerrorresumenext).
这是我正在做的整体结构(省略了几个"无聊的"代码):
public Observable<ModelA> observeGetAPI(){
return retrofitAPI.getObservableAPI1()
.flatMap(observableApi1Response -> {
ModelA model = new ModelA();
model.setApi1Response(observableApi1Response);
return retrofitAPI.getObservableAPI2()
.map(observableApi2Response -> {
// Blah blah blah...
return model;
})
.onErrorResumeNext(observeGetAPIFallback(model))
.subscribeOn(Schedulers.newThread())
})
.onErrorReturn(throwable -> {
// Blah blah blah...
return model;
})
.subscribeOn(Schedulers.newThread());
}
private Observable<ModelA> observeGetAPIFallback(ModelA model){
return retrofitAPI.getObservableAPI3().map(observableApi3Response -> {
// Blah blah blah...
return model;
}).onErrorReturn(throwable -> {
// Blah blah blah...
return model;
})
.subscribeOn(Schedulers.immediate());
}
Subscription subscription;
subscription = observeGetAPI.subscribe(ModelA -> {
// …Run Code Online (Sandbox Code Playgroud) 我注意到,每当我通过长按手机的后退按钮手动杀死我的应用程序时,我的广播接收器就会停止工作.每次用户挂断电话时,接收方负责显示通知,并在manifest.xml中注册该通知.
这是正常/预期的行为吗?我认为接收器应该继续工作,即使用户决定杀死我的应用程序......有没有办法防止这种情况?
谢谢.
编辑
这是接收器的清单条目:
<receiver android:name=".BroadcastReceivers.CallReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud) 我有两个名为A <'ModelA'>和B <'ModelB'>的可观察对象.它们中的每一个都对不同的REST服务执行请求,因此它们扩展了如上所述的不同模型.任何人执行的请求都可能失败.现在,我需要能够链接它们并返回一个ModelC对象.所以,伪编码流将是这样的:
一个<'ModelA'>执行请求,如果失败则执行某些操作,如果没有则将其结果(responseModelA)传递给B <'ModelB'>,这样它就可以执行另一个涉及使用responseModelA部分的REST请求.如果B失败会发生某些事情,如果没有,则将其响应(responseModelB)与responseModelA(手动设置POJO字段)组合在一起以创建ModelC,这是订户应该在其call()方法上接收的参数.
使用rxJava可以远程编码吗?我完全坚持这一点,所以我对任何吸烟都持开放态度.
谢谢.
快速(而且最有可能)简单的问题。
鉴于以下情况List<Job>:
Job(requesterId: 1, offer: 100)
Job(requesterId: 1, offer: 150)
Job(requesterId: 1, offer: 200)
Job(requesterId: 2, offer: 100)
Job(requesterId: 3, offer: 100)
Job(requesterId: 3, offer: 110)
Run Code Online (Sandbox Code Playgroud)
我希望能够基于 过滤其重复项requesterId,但也基于最高的offer,这样我最终会得到一个List<Job>包含最高报价的文件,requesterId如下所示:
Job(requesterId: 1, offer: 200)
Job(requesterId: 2, offer: 100)
Job(requesterId: 3, offer: 110)
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
谢谢