问题描述
suspend fun showOrder(){
flow<Int> {
for (i in 0..10){
emit(i)
delay(1000)
}
}.collect {
Timber.d("test $it")
}
}
我只有第一个发射:“ 0”,仅此而已。有什么问题吗?
解决方法
该代码有效。最可能的问题是您正在测试中运行它,并且程序在收集流之前完成。尝试将其包装在runBlocking
中。
我打电话来是为了响应通知。如果通知是从Foreground(Firebase)发出的,则该功能的作用范围仅限于该服务。由于该服务的生命周期非常短,因此我的函数执行被取消。这就是这种行为的原因。因此,我将范围限制为MainActivity,现在它可以按预期工作。