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'(MutableLiveDataLiveData)的常见模式,可以认为这类似于 属性 和私有 setter。事实上,如果您只需要收集流而不访问它的值,您甚至可以使用 Flow 作为公开类型(尽管正如@MarkKeen 指出的那样,这不适用于数据绑定)。