调用是否会StreamController.close自动取消 aStreamSubscription并删除所有引用?
我认为这是有道理的,但我无法在文档中找到它来确定。
我有以下代码:
dispose: (context, bloc) {
_blocSubscription.cancel();
bloc.dispose();
},
Run Code Online (Sandbox Code Playgroud)
但我很确定我可以删除该_blocSubscription变量并调用bloc.dispose(),这_blocSubscription.cancel()似乎是多余的,并且任何订阅都会自动取消。但我找不到任何有关订阅是否保留对 close 的引用的信息Stream,这可能会导致内存泄漏。
你只需要考虑 aStreamSubscription实际做了什么。
它仅提供一种方法让您取消订阅您的侦听器所生成的事件Stream。
因此,如果因为您关闭而不再有事件,这意味着永远不会再有任何事件,您的侦听器将无法接收任何进一步的事件。Stream
话虽如此,StreamSubscription.cancel关闭Stream.
另一方面,取消订阅也没有什么问题。如果您不能完全确定您的订阅Stream已关闭,但您不想收到任何进一步的事件,请取消您的订阅。
请注意,取消订阅并不意味着关闭Stream。Stream可以有多个接收事件的侦听器。
StreamController.close自动取消吗StreamSubscription?如果您考虑我上面写的内容,您会意识到这个问题有点多余,因为当流关闭时没有什么可以“取消”,因为您不再可以接收任何事件。
所以我会回答是。
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |