RxJava 2.x:我应该使用Flowable还是Single / Completable?


问题内容

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

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

我已经读过Flowable,由于背压管理,网络请求应使用“
”进行,因为它是“冷可观察的”。在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用FlowableSingle甚至Observable

此外,我有这样的数据库访问权限:

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

我不知道我是否应该使用Completable/ Flowable/ ObservablesaveUser方法和Single/
Flowable/ ObservablefindUser方法。


问题答案:

背压是当源Observable排放物品的速度快于Subscriber消耗物品的速度时所得到的。最常见的问题是 观测,而不是像网络请求这样的
观测。

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