首页 > 解决方案 > 当应用程序在后台时,协程流程会暂停

问题描述

我试图解决的问题是在flow特定范围内谋生,例如。viewModelScope. 看看这个简单的例子,一个流程在 while 循环中连续打印日志。

class TestViewModel : ViewModel(){
    init {
        viewModelScope.launch {
            flow<Unit> {
                while (true) {
                    delay(1000L)
                    Log.e("livingWhile", "tick")
                }
            }.collect()
        }
    }
}

一切正常(我每秒都收到一条日志),直到应用程序被置于后台(阻止按钮),然后在应用程序处于后台时大约 1-2 分钟后停止打印日志。看起来有些东西暂停了我的范围,我不确定是什么以及为什么。很少考虑 - 应用程序没有被杀死,viewmodel 是活的(onCleared还没有被调用),流还没有被调用onCompletion,while 循环刚刚停止。当应用程序回到前台时,它再次开始循环。

我在这里想念什么?

标签: androidkotlinkotlin-coroutineskotlin-flow

解决方案


推荐阅读