正确的方式加入rxjava订阅与飞行可观察

问题描述 投票:1回答:1

我有一个方法getData()返回一个Observable。

public Observable<Data> getData() {
  Observable<Data> observable = mApi.networkCall();
  return observable;
}

有很多客户端调用这个方法,如果observable还没有完成,我希望他们只是订阅in flight observable。如果observable已经完成,我需要重新启动调用并获得一个新的observable。检测到observable的最佳方法是什么,我应该再次拨打网络电话?

java android rx-java
1个回答
2
投票

使用.share()。第一个订阅启动可观察,后续订阅者将收到相同的发射。一旦流终止,所有当前订户将无效,下一订阅将再次启动可观察。

public Observable<Data> getData() {
  return mApi.networkCall().share();
}

请注意,我只希望调用getData()一次,并重新使用返回的observable。如果不是这样,我们确保getData()返回单身人士。

© www.soinside.com 2019 - 2024. All rights reserved.