我正在使用 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
”进行,因为背压管理是一个“冷可观察”。另一方面,我知道请求的结果将是成功(有响应)或错误,所以我不知道是否应该使用 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
快可以消耗它们。最常见的问题是 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/