Ошибка сопрограммы - «предполагаемый тип - Задание, но ожидался CompletableJob» - PullRequest
0 голосов
/ 31 октября 2019

У меня давно работает сопрограмма. Я пытаюсь удержать поток, поэтому он может быть отменен по требованию пользователя. Раньше это работало довольно хорошо, но, поскольку я только что переключился с версии 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 Ответ

1 голос
/ 31 октября 2019

По умолчанию, когда мы объявляем Job, мы получаем CompleteableJob вместо Job и, следовательно, ошибку. Таким образом, при объявлении job, если мы определим type явно, ошибка исчезнет.

В приведенном выше случае: private var thread: Job = Job() это будет работать.

Пожалуйста, добавьте, если что-то отсутствует.

...