Dart流.asBroadcastStream内存泄漏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart流.asBroadcastStream内存泄漏相关的知识,希望对你有一定的参考价值。
在我们的Flutter应用程序中,我们的内存泄漏和流没有关闭。我们将源代码追溯到以下代码:]
Rx.combineLatest(...).asBroadcastStream()
RxDart .combineLatest()
的结果是单订阅流。添加.asBroadcastStream()
使流可方便地用于我们的各种Flutter显示器。但是,当关闭这些显示时,合并的流仍处于活动状态。
答案
从.asBroadcastStream()
文档中:
返回的流将在添加其第一个订阅者时订阅该流,并且将保持订阅,直到该流结束,或者回调取消订阅。
因此,根据设计,流将一直存在,直到明确取消为止。要在最后一个监听器取消时取消订阅,请使用:
Rx.combineLatest(...).asBroadcastStream( onCancel: (sub) => sub.cancel() )
Stream.asBroadcastStream - Easy to cause leaks, what is the rationale? #26686中有进一步的讨论
以上是关于Dart流.asBroadcastStream内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章