java - RxJava 2.x : Should I use Flowable or Single/Completable?

标签 java android reactive-programming rx-java2

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

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 快可以消耗它们。最常见的问题是 hot observables,而不是像您的网络请求这样的 cold 对象。

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

关于java - RxJava 2.x : Should I use Flowable or Single/Completable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42525623/

相关文章:

swift - 如何在不创建无限循环的情况下让 RxSwift 中的主题将值推送给自身

java - 斐波那契算法的时间复杂度

java - Android 将 ArrayList<Object> 保存为 SharedPreference

android - 在什么情况下我不应该使用 FragmentManager 的 executePendingTransactions()(在主线程中)?

java - 在未读取所有元素时清理 Iterable

ios - FlatList onEndReached 被多次调用

java - 枚举上的 JPQL LIKE 表达式

java - 用于修剪美国 5+4 邮政编码但保持加拿大邮政编码不变的子字符串

Android App 转移给其他开发者

android - Android 中的 Firebase 身份验证错误