如何在BehaviourSubject中设置默认值

时间:2018-08-28 05:17:13

标签: android kotlin rx-java

可能是一个菜鸟问题。如何为BehaviourSubject设置默认值。

我有一个具有2个不同值的枚举

enum class WidgetState {
    HIDDEN,
    VISIBLE
}

还有一个发出状态的行为主体

val widgetStateEmitter: BehaviorSubject<WidgetState> = BehaviorSubject.create()

写入视图逻辑时,我的发射器开始发射。但是默认情况下它是隐藏的。如何将默认值WidgetState.HIDDEN设置为发射器widgetStateEmitter

3 个答案:

答案 0 :(得分:6)

有一个静态的BehaviorSubject.createDefault(T defaultValue)工厂方法可以设置初始值。

defaultValue参数的Javadoc说:

  

defaultValue -将首先发射到任何Observer的项目   只要BehaviorSubject尚未观察到任何来自   其来源Observable

因此,您只需要按照以下步骤创建BehaviorSubject

val widgetStateEmitter: BehaviorSubject<WidgetState> = 
        BehaviorSubject.createDefault(HIDDEN)

答案 1 :(得分:1)

订阅该主题时,您可以使用Start with Operator

widgetStateEmitter.startWith(HIDDEN)
//continue your chain

答案 2 :(得分:0)

在构造函数或onCreate(或类似方法)中,只需调用widgetStateEmitter.onNext(HIDDEN)