android - 当 block 在 Runnable 体内时发出 Flow 值

标签 android runnable kotlin-coroutines

所以我有这个函数,我可以用流发出值,但我需要定期发送值,所以我使用了:

fun hereIsAFunction(): Flow<Type> = flow {
    Handler.postDelayed({
        //This is in Runnable and I can't emit values
        emit(value) //Error 'Suspension function can only be called within Coroutine body
    }, 1000)

    usingOtherFunction()
}

我不想阻止函数“usingOtherFunction()”,这就是我使用可运行对象的原因

问题:有什么方法可以通过周期性事件通过 Flow 发出值吗?如果是,我应该调查什么?

最佳答案

根据您想要并行执行某些操作的评论,您可以在一个范围内启动 2 个协程。它们将彼此独立运行:

fun hereIsAFunction(): Flow<Type> = flow {
    coroutineScope {
        launch {
            (0..100).forEach {
                delay(1000)
                emit(...)
            }
        }
        launch {
            usingOtherFunction()
        }
    }
}

关于android - 当 block 在 Runnable 体内时发出 Flow 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66220086/

相关文章:

android - 更改 ImageView 的背景(旧图像保留在那里!)

android - 线程只循环一次

android - Dispatchers.IO协程线程

android - 通过协程创建两个序列http请求。当第一个请求完成时,第二个请求必须等待

android - 使用Java,是否有可能达到与Coroutines相同的效率?

android - OpenCV Android - 查找/绘制轮廓错误

android layout-land 和 screen-rotation 处理

android - 如何在保持专注的同时使用 EditText onClick 方法

java - Java中有没有办法让事件带有变量?里面的例子

java - 暂停执行 Runnable 和/或将其移动到另一个线程