pro*_*m85 4 android observable rx-java
通常我用
Observable observable = someObservable.replay().refCount();
Run Code Online (Sandbox Code Playgroud)
创建一个只能执行一次的可观察对象。如果我observable多次订阅,则效果很好:
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
将observable只执行一次-完美的,就像我想它。如果我现在执行以下操作:
Observable obs1 = observable.map(...); // call some operators
Observable obs2 = observable.map(...); // call some operators
obs1.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
obs2.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
然后observable执行两次。我如何确保不会发生这种情况?
我认为您想要添加一个.take(1)运算符。这样,一旦从可观察对象读取了某些内容,它将调用onComplete。