我使用collectLatest从流中收集值,但每当它处理最新值并取消旧处理值时,我总是得到低于exeception的值。
collectLatest
ChildCanceledException: Child of the scoped flow was cancelled
问题:1.我们可以使用collectLatest来避免这个异常吗?1.我们可以使用collect来实现collect latest功能以避免此异常吗?
2ul0zpep1#
我认为对于你的数据变量的更新,你应该是流动的,你可以像这样收集你的数据:
变量声明
private val _uiEvents = Channel<UIEvents>() val uiEvents = _uiEvents.receiveAsFlow()
向变量发送事件或数据
viewModelScope.lauch{ _uiEvents.send(UIEvent()) }
正在收集数据
viewModelScope.lauch{ uiEvents.collect{ it: UIEvent -> /* Here will be your code to update you data and $it will be your updated value */ } }
这里uiEvents收集来自_uiEvents的所有新数据作为流,当你使用流时,你可以很容易地收集你的数据。这个流将持续很长时间,因为你的应用程序,所以没有选择内存泄漏。如果你觉得这比让我知道,如果有任何错误的解释,然后纠正我有帮助,我很高兴知道你的侧面答案。谢谢。
1条答案
按热度按时间2ul0zpep1#
我认为对于你的数据变量的更新,你应该是流动的,你可以像这样收集你的数据:
变量声明
向变量发送事件或数据
正在收集数据
这里uiEvents收集来自_uiEvents的所有新数据作为流,当你使用流时,你可以很容易地收集你的数据。
这个流将持续很长时间,因为你的应用程序,所以没有选择内存泄漏。
如果你觉得这比让我知道,如果有任何错误的解释,然后纠正我有帮助,我很高兴知道你的侧面答案。谢谢。