Android RxJava:我如何启动一个任务,以及当它完成后如何启动另一个任务?
我正在尝试使用RxJava在Android中创建一个聊天应用程序。事件的顺序是这样的:Android RxJava:我如何启动一个任务,以及当它完成后如何启动另一个任务?,android,rx-java2,Android,Rx Java2,我正在尝试使用RxJava在Android中创建一个聊天应用程序。事件的顺序是这样的: 用户编写消息并按下“发送” 包含(id,message,sender,…)的message对象应该首先存储在本地数据库中,因为我需要生成他的id并返回已建立id的message对象 一旦消息对象被存储,id被设置,我必须使用正确的方式发送消息 问题是,我不确定如何使用RxJava编程,如何启动一个任务以及任务完成后如何启动另一个任务?我读过关于操作符zip、empty和when、skipuntil、fla
- 用户编写消息并按下“发送”
- 包含(id,message,sender,…)的message对象应该首先存储在本地数据库中,因为我需要生成他的id并返回已建立id的message对象
- 一旦消息对象被存储,id被设置,我必须使用正确的方式发送消息
public Observable<Boolean> sendMessage(Message message) {
return Observable.unsafeCreate(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
MessageEntity messageEntity = messageToMessageEntityMapper.map(message);
messageRepository.saveMessage(messageEntity);
chatHelper.sendMessage(messageEntity);
subscriber.onNext(true);
}
});
}
公共可观察发送消息(消息消息){
返回Observable.unsafectreate(新Observable.OnSubscribe(){
@凌驾
public void call(订户您可以使用observable.map
使用第一个observable的结果并执行第二个observable
public Observable<Boolean> sendMessage(Message message{
MessageEntity messageEntity = messageToMessageEntityMapper.map(message);
return messageRepository.saveMessage(messageEntity)
.map( updatedMessage -> {
chatHelper.sendMessage(updatedMessage );
return Observable.just(true);
});
};
公共可观察发送消息(消息消息{
MessageEntity MessageEntity=messageToMessageEntityMapper.map(消息);
return messageRepository.saveMessage(messageEntity)
.map(更新消息->{
sendMessage(updatedMessage);
返回可观察的。刚好(真实);
});
};
您还可以使sendMessage
返回一个布尔值Observable
,而不是从map
方法显式返回true
如果不需要使用第一个可观察项发出的项目,您可以使用可观察项。合并
,并使用发送消息
返回可观察项。您不能使用AsyncTask吗?我不知道RxJava。但这是我们在android研究中所做的。整个应用程序都是使用RxJava制作的,所以我尝试使用相同的技术和架构。where是可观测的。of(true)?该函数不存在。of是用于rxjs的。Observable.just是用于rxjava的。我猜它显示了这个错误:没有类型变量的实例T的存在使得可观测符合布尔推理变量R具有不兼容的边界:等式约束:布尔下界:可观测
public Observable<Boolean> sendMessage(Message message{
MessageEntity messageEntity = messageToMessageEntityMapper.map(message);
return messageRepository.saveMessage(messageEntity)
.map( updatedMessage -> {
chatHelper.sendMessage(updatedMessage );
return Observable.just(true);
});
};