多个订阅单个网络请求Retrofit和RXJava?

时间:2016-06-14 05:48:42

标签: android rx-java retrofit2 rx-android

我是RxJava和Retrofit的新手。假设我有将Observable作为

返回的Retrofit服务
Observable <User> login(String userName, String password);

如何在多个地方订阅此Observable。我想在多个Android活动上订阅它。

例如:假设我有登陆页面和登录页面活动。登录页面后会显示登录页面。当我在登录页面上发出网络请求时,应在登录页面和登陆页面上观察到结果。

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:4)

您可以执行login(username,pw).cache() - cache()自动连接以获取可观察信息,并将所有已发放的项目重播给其订阅者。它适用于发射单一结果的可观测量,如改造那样。另一个选项 - replay(),仅返回ConnectableObservable,并仅在调用ConnectableObservable.connect()时订阅源。它有许多有用的重载(replay(bufferSize)replay(time, TimeUnit)等),允许用户控制缓存的项目数。