您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

屏幕旋转后恢复可流动的转换为实时数据

屏幕旋转后恢复可流动的转换为实时数据

由于斯维亚托斯Lebeckiy了在Android的美国时差通道谁指出,BehaviorSubjectBehaviorProcessor我,提出了关于如何解决此问题的想法。

我将视图模型更改为:

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,因此使用aBehaviorProcessor代替BehaviorSubject此处很方便。

其他 2022/1/1 18:28:39 有512人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶