stateIn 运算符不更新 StateFlow 的缓存值

stateIn operator doesn't update the cached value of StateFlow

我有一些共享流,这些流被合并到不同 类 中的多个流中,然后这些流被合并成一个流。原来的共享流是这样配置的:

protected val statusMutable = MutableSharedFlow<Int>()
val status: Flow<Int> = statusMutable.asSharedFlow()

所以,默认配置。最后我有这样的代码:

val status
    get() = merge(
        object1.status, // merged shared flows
        object2.status, // merged shared flows
        object3.status, // merged shared flows
        statusMutable
    ).stateIn(GlobalScope, SharingStarted.Lazily, initialValue = someInt)

这个流应该是无限热流,所以我用的是GlobalScope(如果有更好的方法,你也可以告诉我如何更好地解决这个问题,但这不是实际问题)。

实际问题是值的发出和收集都很好,但结果 StateFlow 出于某种原因没有更新其值 属性(因此重放缓存)。这会导致新订阅者无法获得订阅的最新发射值的情况。这可能是什么原因造成的,我该如何解决?

事实证明,问题是我通过 getter 访问此流程,尽管我只需要将其分配给 属性。多么愚蠢的错误!有趣的是,我放弃了自己寻找答案并发布了这个问题,只是在大约 15 分钟后才发现错误。