我想 "insert record to room database" -> "Api call " -> "Update local record"
I want to "insert record to room database" -> "Api call " -> "Update local record"
我是 rxjava 的新手 android。我想在本地房间数据库中插入记录。我将自动生成设置为 true,因此它会为我生成 id。然后我想调用 api 将该记录发送到服务器。在 api 调用成功后,我想使用从服务器获取的 serverId 更新本地数据库中先前添加的记录。我知道我可以使用 rxjava 平面图实现这个序列,但我不知道如何实现。
这是我的插入方法 returns id
@Insert
Single<Long> insertMessage(ChatMessage chatMessage);
这是我的 api 电话
@POST(ApiConstants.API_CHAT_SEND_MESSAGE)
Single<SendMessageResponse> sendChatMessage(@Body PostChatMessage postChatMessage);
这是我的更新方法
@Query("UPDATE message SET id = :id WHERE localId = :idToUpdate")
Single<Integer> updateMessage(String id, int idToUpdate);
任何帮助将不胜感激
我厌倦了这种方式,它工作正常并给了我预期的结果
messageDao.insertMessage(chatMessage)
.subscribeOn(Schedulers.io())
.flatMap(id -> {
return ApiServiceClient.getApiServiceNew().sendChatMessage(postChatMessage).flatMap(sendMessageResponse -> {
messageDao.updateMessage(sendMessageResponse.getData().getId(), id);
return Single.just(id);
});
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new SingleObserver<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Long aLong) {
Log.d(TAG,"Record updated"+aLong);
}
@Override
public void onError(Throwable e) {
Log.d(TAG,"Record Failed"+e.getMessage());
}
});
我是 rxjava 的新手 android。我想在本地房间数据库中插入记录。我将自动生成设置为 true,因此它会为我生成 id。然后我想调用 api 将该记录发送到服务器。在 api 调用成功后,我想使用从服务器获取的 serverId 更新本地数据库中先前添加的记录。我知道我可以使用 rxjava 平面图实现这个序列,但我不知道如何实现。
这是我的插入方法 returns id
@Insert
Single<Long> insertMessage(ChatMessage chatMessage);
这是我的 api 电话
@POST(ApiConstants.API_CHAT_SEND_MESSAGE)
Single<SendMessageResponse> sendChatMessage(@Body PostChatMessage postChatMessage);
这是我的更新方法
@Query("UPDATE message SET id = :id WHERE localId = :idToUpdate")
Single<Integer> updateMessage(String id, int idToUpdate);
任何帮助将不胜感激
我厌倦了这种方式,它工作正常并给了我预期的结果
messageDao.insertMessage(chatMessage)
.subscribeOn(Schedulers.io())
.flatMap(id -> {
return ApiServiceClient.getApiServiceNew().sendChatMessage(postChatMessage).flatMap(sendMessageResponse -> {
messageDao.updateMessage(sendMessageResponse.getData().getId(), id);
return Single.just(id);
});
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new SingleObserver<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Long aLong) {
Log.d(TAG,"Record updated"+aLong);
}
@Override
public void onError(Throwable e) {
Log.d(TAG,"Record Failed"+e.getMessage());
}
});