我有一个方法getData()返回一个Observable。
public Observable<Data> getData() {
Observable<Data> observable = mApi.networkCall();
return observable;
}
有很多客户端调用这个方法,如果observable还没有完成,我希望他们只是订阅in flight observable。如果observable已经完成,我需要重新启动调用并获得一个新的observable。检测到observable的最佳方法是什么,我应该再次拨打网络电话?
使用.share()
。第一个订阅启动可观察,后续订阅者将收到相同的发射。一旦流终止,所有当前订户将无效,下一订阅将再次启动可观察。
public Observable<Data> getData() {
return mApi.networkCall().share();
}
请注意,我只希望调用getData()
一次,并重新使用返回的observable。如果不是这样,我们确保getData()
返回单身人士。