RxJava 2.x:我应该使用Flowable还是Seble/Compleable?

我正在使用Clean Architecture开发一个Android应用程序,我正在将其迁移到RxJava 2.x。我必须向 soap 服务发出一些网络请求,因此我在域模块中定义了 api 接口:

public interface SiginterApi {
    Observable<User> login(String user, String password);
    ...
    Observable<List<Campaign>> getCampaigns(List<Long> campaignIds);
}

我读过,网络请求应该用“”提出,因为它是一个“冷可观察”的背压管理。另一方面,我知道请求的结果将是成功(带有响应)或错误,因此我不知道我是否应该使用或甚至。FlowableFlowableSingleObservable

此外,我有一个这样的数据库访问:

public interface UserRepository extends Repository {
    Observable<Void> saveUser(String username, String hashedPassword, boolean logged, User user);
    ...
    Observable<User> findUser(String username, String hashedPassword);
}

我不知道我是否应该在方法中使用 // 和在方法中使用 // 。CompletableFlowableObservablesaveUserSingleFlowableObservablefindUser


答案 1

背压是当源发出物品的速度快于消耗物品的速度时所得到的。这通常是可观察量的问题,而不是像网络请求这样的可观察量。ObservableSubscriber

我认为你应该在你的方法中使用而不是使用,并用于你遵循请求/响应或输入/输出模式的所有地方。 当您实际需要连续的事件流时,应使用。CompletableObservable<Void>saveUserSingleObservable


答案 2

可观察对象发出项目的速度快于操作员或订阅者可以使用项目的速度时,就会发生背压

知道这一点,背压在你的情况下不是问题,因为你只会发出一个项目,所以不是一个好的候选人。ObservableFlowable

因此,真正的问题是,为了API的简单性和清晰度,这里是否使用或for和for和,因为只有一个结果(成功或失败),您应该明确使用/否则将很难理解只会发出一个值,这可能会误导您的API用户。CompletableObservablesaveUserSingleObservablefindUserCompletableSingle


推荐