将LiveData与Coroutine结合使用时,切换到Kotlin 1.4时出现Android编译时间错误

时间:2020-08-24 06:54:54

标签: android kotlin android-livedata

使用LiveData考虑一个简单的协程

liveData(viewModelScope.coroutineContext + Dispatchers.IO) {
  emitSource(repo.fetchUser().map { user ->
     // .. Do something 
  }
}

以前直到org.jetbrains.kotlin:kotlin-gradle-plugin: 1.3.72 ,该语句都还不错。 现在出现错误

Type mismatch.
Required:
         Unit
Found:
         DisposableHandle

如果您在liveData库中看到androidx.lifecycle:lifecycle-livedata-ktx:2.2.0函数,

fun <T> liveData(
    context: CoroutineContext = EmptyCoroutineContext,
    timeoutInMs: Long = DEFAULT_TIMEOUT,
    @BuilderInference block: suspend LiveDataScope<T>.() -> Unit
): LiveData<T> = CoroutineLiveData(context, timeoutInMs, block)

“ block”返回“ Unit”,这很好。但是,emitSource返回DisposableHandle。 在Kotlin 1.4之前,编译器没有抱怨。现在突然我的整个源代码到处都是这些错误

是因为Kotlin的这一新功能接口功能吗? DisposableHandle中只有一种方法。有什么变化?还有其他人面对吗?

0 个答案:

没有答案