【问题标题】:Dart stream .asBroadcastStream memory leakDart 流 .asBroadcastStream 内存泄漏
【发布时间】:2020-06-13 15:47:49
【问题描述】:

在我们的 Flutter 应用程序中,我们存在内存泄漏和未关闭的流。我们追溯源代码如下:

Rx.combineLatest(...).asBroadcastStream()

RxDart .combineLatest() 的结果是单订阅流。添加.asBroadcastStream() 使流可以方便地用于我们的各种 Flutter 显示器。但是,当这些显示关闭时,正在组合的流仍然处于活动状态。

【问题讨论】:

    标签: dart stream rxdart


    【解决方案1】:

    来自.asBroadcastStream() 文档:

    返回的流将在添加第一个订阅者时订阅此流,并且将保持订阅状态直到此流结束或回调取消订阅

    所以按照设计,流一直存在,直到明确取消。要在最后一个侦听器取消时取消订阅,请使用:

    Rx.combineLatest(...).asBroadcastStream( onCancel: (sub) => sub.cancel() )

    Stream.asBroadcastStream - Easy to cause leaks, what is the rationale? #26686有进一步讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-04
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多