有点背景:我的应用程序使用的屏幕组件可能包含多个用例模型。 这些用例模型在后台启动网络请求协程,并通过广播状态的通道与屏幕进行通信。
当用户导航到另一个屏幕时,将取消相应屏幕范围的作业,并销毁该屏幕。
我的第一个问题是:该频道发生了什么?我还是需要关闭它还是隐式关闭它?
我的第二个问题是:如果频道仍然挂在某处,试图广播到不再存在的接收器(屏幕),我该如何测试/观察自己?
答案 0 :(得分:0)
在更仔细地阅读了文档之后,我认为解决方案是在怀疑挂起的通道上调用OnClose。
例如:
channel.invokeOnClose {
print("channel closed")
}
然后可以运行该应用程序,并开始导航到不同的屏幕。如果显示“通道已关闭”消息,则表示一切正常,否则表示该通道已挂起。
在我的情况下,通道未关闭,因此我需要在适当的生命周期位置调用channel.close()。