使用 in flight observable 加入 rxjava 订阅的正确方法
correct way to join an rxjava subscription with in flight observable
我有一个方法 getData() returns 一个 Observable。
public Observable<Data> getData() {
Observable<Data> observable = mApi.networkCall();
return observable;
}
有很多客户端调用此方法,如果 observable 尚未完成,我希望他们只订阅 in flight observable。如果 observable 已经完成,我需要重新启动调用并获得一个新的 observable。检测可观察对象完成的最佳方法是什么,我应该再次调用网络调用吗?
使用.share()
。第一个订阅启动可观察对象,后续订阅者将收到相同的发射。一旦流终止,所有当前订阅者都将无效,下一个订阅将再次启动可观察对象。
public Observable<Data> getData() {
return mApi.networkCall().share();
}
请注意,我只希望 getData()
被调用一次并重用返回的可观察对象。如果不是这种情况,我们会确保 getData()
返回一个单例。
我有一个方法 getData() returns 一个 Observable。
public Observable<Data> getData() {
Observable<Data> observable = mApi.networkCall();
return observable;
}
有很多客户端调用此方法,如果 observable 尚未完成,我希望他们只订阅 in flight observable。如果 observable 已经完成,我需要重新启动调用并获得一个新的 observable。检测可观察对象完成的最佳方法是什么,我应该再次调用网络调用吗?
使用.share()
。第一个订阅启动可观察对象,后续订阅者将收到相同的发射。一旦流终止,所有当前订阅者都将无效,下一个订阅将再次启动可观察对象。
public Observable<Data> getData() {
return mApi.networkCall().share();
}
请注意,我只希望 getData()
被调用一次并重用返回的可观察对象。如果不是这种情况,我们会确保 getData()
返回一个单例。