@Override
public void onPause() {
super.onPause();
compositeDisposable.clear();
}
@Override
public void onResume() {
super.onResume();
Flowable<MyData> distanceFlowable = myDataProcessor.hide().onBackpressureLatest()
.distinctUntilChanged()
.share();
compositeDisposable.add(distanceFlowable)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {Log.w("observer 1", data.value)});
compositeDisposable.add(distanceFlowable)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {Log.w("observer 2", data.value)});
}
当distanceFlowable连续获得新更改时,该代码将运行良好。但是,在远距离流只有一个帖子的情况下,只有 observer 1 会得到通知。
行为如下:
我希望它的行为类似于:
我尝试使用ConnectedFlowable
代替publish()
,然后在 observer 1 和 observer 2 都使用connect()
到流动对象已订阅。但是,即使清除了compositeDisposable
并且没有人在听,它仍然在可流动的状态下发布。
解决此问题的首选方法是什么?
答案 0 :(得分:1)
我错过了flowable.connect()
返回一个我可以添加到Disposable
的{{1}}的情况,因此最终在onPause中将其清除了。
答案 1 :(得分:1)
只需使用.compose(ReplayingShare.instance());
https://github.com/JakeWharton/RxReplayingShare
应该可以。