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
,由于背压管理,网络请求应使用“
”进行,因为它是“冷可观察的”。在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用Flowable
或Single
甚至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
/ Observable
在saveUser
方法和Single
/
Flowable
/ Observable
的findUser
方法。
问题答案:
背压是当源Observable
排放物品的速度快于Subscriber
消耗物品的速度时所得到的。最常见的问题是 热 观测,而不是像网络请求这样的
冷 观测。
我认为您应该使用Completable
而不是Observable<Void>
您的saveUser
方法,并Single
在遵循请求/响应或输入/输出模式的所有地方使用。Observable
当您确实需要连续的事件流时,应使用。