协程错误-“推断的类型为Job,但预期为CompletableJob”

时间:2019-10-31 15:22:42

标签: android coroutine

我的协程很长。我试图抓住该线程,因此可以根据用户要求将其取消。之前它运行得很好,但是由于我刚从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()
        }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

默认情况下,当我们声明Job时,似乎得到的是CompleteableJob而不是Job,因此是错误。 因此,在声明job时,如果我们显式定义type,则错误消失了。

在上述情况下: private var thread: Job = Job()将起作用。

如果有任何遗漏,请添加。