【发布时间】:2021-11-14 12:57:00
【问题描述】:
我需要一些指导,才能在我的 ViewModel 类中以实时数据的形式观察一些流。
例如:ViewModel 类的字段 userDataFlow 下面结合了一些数据流流。我希望能够将该字段的工作提取到一个单独的类中,并让所有内部工作都在那里进行,并且只想观察 ViewModel 中字段的 LiveData。我需要从 ViewModel 的该类的 Parameter 中传递一些东西,Flow 需要这些东西才能工作。不确定这是否是一个好习惯。基本上,让我的 ViewModel 观察结果并将其传递给 View。
val userDataFlow: Flow<List<UserData>> =
combine(
familyChannel.asFlow(),
userRealTimeData.asFlow,
).asLiveData()
}
【问题讨论】:
-
这段代码没有意义。它是流还是 LiveData?您获取
combine返回的 Flow 并将其转换为 LiveData 只是为了尝试使用它初始化 Flow 属性。我不明白你对你想要做什么的描述。 -
您的问题不是很清楚。但是,当您谈论关注点分离时,我会添加一个存储库层来处理业务逻辑,而不是让 ViewModel 处理它。让 ViewModel 只为视图准备数据。看看这个:developer.android.com/jetpack/guide
标签: android kotlin concurrency kotlin-coroutines