Kotlin runBlocking在后台线程上

时间:2019-01-29 14:54:49

标签: android multithreading kotlin kotlinx.coroutines

我正在将现有应用程序从Java转换为Kotlin。 该应用程序创建一个 IntentService ,该线程在后台线程中运行,并负责执行一些操作,这些操作会无限期地重复使用suspend函数来阻塞线程(例如,网络调用,数据库交互)。 由于“当前线程”实际上是后台线程,因此我不会阻止UI。

在当前线程上使用runBlocking来运行所有挂起的函数是一种好习惯吗?还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

这正是runBlocking的用法。 runBlocking被添加到协程中,以在coroutines的用户和其他阻塞执行代码的位置之间建立桥梁。如果要阻止线程并等待协程的执行,则应始终使用runBlocking