我的协程很长。我试图抓住该线程,因此可以根据用户要求将其取消。之前它运行得很好,但是由于我刚从1.1.1版切换到1.3.0版,因此现在遇到此编译错误:“推断的类型为Job,但应为CompletableJob”。但是,在协程中,CompletableJob似乎不是类类型吗?
class DashboardPresenter(private val view: DashboardContract.View) : DashboardContract.Presenter {
private var thread = Job()
private var duration: Int = ConfigData.refresh * 1000
private fun loadDataRefresher() {
counter++
val next = if (running) ", next in ${ConfigData.refresh} seconds" else ""
Timber.d("********* Dashboard Refresh #${counter} $next ************")
thread = CoroutineScope(Dispatchers.Main).launch {
if (running) {
updateUi(area)
delay(duration.toLong())
loadDataRefresher()
}
}
}
}
答案 0 :(得分:1)
默认情况下,当我们声明Job
时,似乎得到的是CompleteableJob
而不是Job
,因此是错误。
因此,在声明job
时,如果我们显式定义type
,则错误消失了。
在上述情况下:
private var thread: Job = Job()
将起作用。
如果有任何遗漏,请添加。