由于斯维亚托斯Lebeckiy了在Android的美国时差通道谁指出,
BehaviorSubject和
BehaviorProcessor我,提出了关于如何解决此问题的想法。
我将视图模型更改为:
class TestViewModel extends ViewModel { private LiveData<String> countdown; LiveData<String> getCountdown() { if (countdown == null) { countdown = LiveDataReactiveStreams.fromPublisher(startCountdown()); } return countdown; } private static Flowable<String> startCountdown() { final BehaviorProcessor<String> processor = BehaviorProcessor.create(); Flowable.concat( Flowable.just("Falcon Heavy rocket will launch in..."), Flowable.intervalRange(0, 10, 3, 1, TimeUnit.SECONDS) .map(x -> String.valueOf(10 - x)), Flowable.timer(1, TimeUnit.SECONDS) .map(ignored -> "Lift off!") ).subscribe(processor); return processor; }}
这样,我只能倒数一次开始计时,
getCountdown并且
BehaviorProcessor创建时
startCountdown负责将最后一个随后发出的值传递给其订户(
LiveData在这种情况下)。
由于
LiveDataReactiveStreams需要a
Flowable,因此使用a
BehaviorProcessor代替
BehaviorSubject此处很方便。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)