android - 我如何等待 Kotlin 协程中的其他事件?

标签 android kotlin kotlin-coroutines

在 Kotlin 中,使用协程,假设我有一项工作,它通过单击按钮开始,并且在调用 Activity 的 onStop 之前不应该结束。

看起来像这样的东西:

button.setOnClickListener {
    CoroutineScope(...).launch{
        print("Button clicked")

        // How to wait for "onStop()" ?

        print("Activity stopped")
    }
}

以上场景只是一个一般需要合并的例子 SDK 中以函数调用形式出现的异步事件 (onStop())。

应该怎么做?谢谢:]

最佳答案

我会为一个按钮创建一个特殊的 channel ,而不是从 onStop(0) 向它发送一些东西,然后在你的代码中等待它:

val onStopChannel = Channel<Int>()

fun onStop() {
    onStopChannel.offer(0)
}

button.setOnClickListener {
    CoroutineScope(...).launch{
        print("Button clicked")

        onStopChannel.receive()

        print("Activity stopped")
    }
}

任何其他 observable 也可以工作。

关于android - 我如何等待 Kotlin 协程中的其他事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870773/

相关文章:

android - 在后台使用服务实现倒数计时器

android - Kotlin Null 安全警告 Unexpected tokens (use ; to separate expressions on the same line)

android - 我怎么知道特定协程调度程序使用的线程数是多少?

android - 我无法将 Compose 从 1.1.1 升级到 1.2.0

firebase - 为什么 trySend 会发出假数据?

android - Dialog.show() 与 Activity.showDialog()

Android Facebook 登录唯一 key

android - 用户 Android M 在应用程序中授予的权限

android - 在 Androidx 上使用 registerForActivityResult 选择文件

android - 为什么在我使用自定义主机和架构时 Deeplink 不起作用?