android - 挂起函数会挂起协程吗?

标签 android kotlin kotlin-coroutines coroutine suspend

其实我很困惑。例如,我知道 suspendCoroutine 函数是一个挂起协程的挂起函数。但是所有挂起函数都会挂起协程吗?此外,我知道当一个协程被挂起时,它会从相应的线程中移除一段时间,其他协程或任务可以恢复并在此线程上运行。

我想得出的结论是,如果所有挂起函数都不挂起协程,那么将挂起函数放在协程中和不挂起函数放在协程中有什么区别?

最佳答案

标记函数 suspend 赋予它能力 挂起协程,但只有在它内部调用另一个挂起协程的挂起函数时才会真正挂起协程。 直接挂起协程的挂起函数在标准库中。其中包括 suspendCoroutine()suspendCancellableCoroutine()。你不会经常使用这些。它们最常用于将非协程 API 转换为挂起函数。

间接暂停协程的一些常用函数是withContext()delay()Job.join ()Deferred.await()

关于android - 挂起函数会挂起协程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73248751/

相关文章:

Android - setImageResource 比将资源 ID 解码为位图更有效吗?

android - 使用 Twilio JavaI420Buffer (Kotlin) 时出现 UnsatisfiedLinkError

android - 如何等待协程 Dispatch.IO 数据库查询完成以填充 RecyclerView

android - 如何在 Android 中打开嵌套的子 PreferenceScreen

android - list 中的使用功能加速度计

android - Kotlin 编写了一个函数,可以检查可能的数十个值并使用 lambda 类型返回它们的非空值

java - 如何摆脱使用 Spring Boot 时 Detekt 发出的 SpreadOperator 性能警告?

kotlin - 如何在Kotlin中返回等待的值?

kotlin - 组合 Flow 和非 Flow api 响应 Kotlin

java - 寻找 android Facebook SDK 示例