Android数据绑定中的StateFlow或MutableStateFlow
Android StateFlow or MutableStateFlow in data binding
我正在 DataBindings 中试用 StateFlow,在我能找到的所有示例中,大多数看起来像 this one 的副本,ViewModel 中使用两个变量进行一个数据绑定。一个私有的 MutableStateFlow 和一个 public StateFlow。 StateFlow 几乎只是从 MutableStateFlow 中读取值。为什么是这样?只拥有一个变量,一个 MutableStateFlow 并一起跳过 StateFlow 变量不是更容易吗?
这只是一个简单的封装案例(与数据无关binding/Android)。从技术角度来看,这是一个多余的步骤,没有任何区别。然而,从设计的角度来看,它限制了在 class.
之外修改 StateFlow
值
这是 'observable data holders'(MutableLiveData
和 LiveData
)的常见模式,可以认为这类似于 属性 和私有 setter。事实上,如果您只需要收集流而不访问它的值,您甚至可以使用 Flow
作为公开类型(尽管正如@MarkKeen 指出的那样,这不适用于数据绑定)。
我正在 DataBindings 中试用 StateFlow,在我能找到的所有示例中,大多数看起来像 this one 的副本,ViewModel 中使用两个变量进行一个数据绑定。一个私有的 MutableStateFlow 和一个 public StateFlow。 StateFlow 几乎只是从 MutableStateFlow 中读取值。为什么是这样?只拥有一个变量,一个 MutableStateFlow 并一起跳过 StateFlow 变量不是更容易吗?
这只是一个简单的封装案例(与数据无关binding/Android)。从技术角度来看,这是一个多余的步骤,没有任何区别。然而,从设计的角度来看,它限制了在 class.
之外修改StateFlow
值
这是 'observable data holders'(MutableLiveData
和 LiveData
)的常见模式,可以认为这类似于 属性 和私有 setter。事实上,如果您只需要收集流而不访问它的值,您甚至可以使用 Flow
作为公开类型(尽管正如@MarkKeen 指出的那样,这不适用于数据绑定)。