Channels 是发送/处理从视图模型到片段/活动的一次性事件的最佳选择吗?

Hos*_*ekk 3 android coroutine kotlin kotlin-coroutines

我试图通过在视图模型中使用密封类来发送事件,将事件发送到片段或活动,例如显示小吃店或烤面包,我想知道,通道是流还是共享流的最佳选择?

Hor*_*rea 6

我建议您阅读这篇文章:ViewModel:一次性事件反模式

基本上,它论证了为什么应该将一次性事件转换为状态,并使用 ViewModel 中的函数修改状态。

示例:状态表示要显示小吃栏。UI 显示小吃栏,然后告诉 ViewModel 它已显示。ViewModel 相应地更新状态,因此小吃栏不会再次显示。