【发布时间】:2021-05-30 15:46:41
【问题描述】:
我有一个循环返回 Flow 的 UseCase 和远程存储库,我在 ViewModel 中收集 UseCase 的结果,如下所示:
viewModelScope.launch {
useCase.updatePeriodically().collect { result ->
when (result.status) {
Result.Status.ERROR -> {
errorModel.value = result.errorModel
}
Result.Status.SUCCESS -> {
items.value = result.data
}
Result.Status.LOADING -> {
loading.value = true
}
}
}
}
问题是当应用程序在后台(最小化)流程继续工作时。那么我可以在应用程序处于后台时暂停它并在应用程序回到前台时恢复它吗?
而且我不想在我的视图中观察数据(片段或活动)。
【问题讨论】:
-
如果您希望根据 UI 的生命周期来更改某些内容,为什么不将其绑定到您的 UI?看起来你正在与你需要的东西作斗争。
-
在视图中收集或观察远程数据源是一种反模式,因此我们必须在 ViewModel 中这样做。但我们那里没有 ViewLifeCycle 所以我认为这是我的问题。我尝试了 MediatorLiveData 和 Stateflow,但它们没有帮助我。
-
我想看看你引用的是什么来源,因为生命周期感知正是 UI 中收集的用途以及 Guide to app architecture 所讨论的内容。来自
result的数据如何输入到您的 UI 中?听起来您实际上正在寻找的是map来将您的定期更新转换为您的 UI 需要。 -
useCase.updatePeriodically()函数的实现是什么?
-
@YuriiKot 其实没关系,只是回流
标签: android viewmodel android-lifecycle kotlin-coroutines