我一次可以观察多少个 Stateflow?

How many Stateflows can I observe at one time?

我为 Android 开发应用程序。我想知道一次可以观察多少个 Kotlin Stateflow?我所做的每个 observe 都是在我自己创建的不同 CoroutineScope 上完成的,由 IO 调度程序调度或由 Android 框架的生命周期组件提供。

我已经完成了各种操作,例如协程内无限循环中的简单添加和使用 Android Studio profiler 我观察到启动大量执行计算的协程会导致 CPU 上的高负载。

考虑到 Stateflow 永远不会完成,它的每个收集都是阻塞的,并且在不同的 CoroutineScope 上完成,如示例和文档所述,我可以观察到的最大 Stateflow 数量是多少一次不用担心我会高度使用 CPU,创建太多线程或者只是 运行 设备资源不足?

订阅还是协程,协程便宜。我们绝对没有可以告诉你的普遍界限。

every collect on it is blocking

它暂停,它不阻塞。并且您始终可以使用 takeWhile 或类似的方式只从中收集直到您可以停止,或者您可以取消正在执行收集的协程(例如使用 withTimeout)。

对性能的主要限制是更新 MutableStateFlow 花费的时间与 StateFlow 的订阅者数量呈线性关系,因此如果您更新StateFlow 有 1000 个订阅者,这比更新只有一个订阅者的 MutableStateFlow 花费的时间要长 ~1000 倍。