在2.1 Room中增加了对协程的支持,但我无法使其正常运行。它应该像添加依赖项一样容易,但是以某种方式我忽略了某些东西。
在build.gradle中,我获得了协程,房间和房间协程的依赖关系
dependencies {
def room_version = "2.2.0-beta01"
// Room components
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
implementation "androidx.room:room-ktx:$room_version"
androidTestImplementation "android.arch.persistence.room:testing:$room_version"
def coroutines_version = "1.1.1"
// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
}
我已经尝试过重新同步gradle,清理和重建项目。
在Doa中,我有以下类似的方法
@Dao
interface PlanDao {
@Insert
suspend fun insertVerPlan(verPlan: SqlVerPlan)
}
尝试构建项目时,Room不知道如何处理暂停功能,并且会发生以下错误:
error: Type of the parameter must be a class annotated with @Entity or a collection/array of it.
kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
^
error: Methods annotated with @Insert can return either void, long, Long, long[], Long[] or List<Long>.
public abstract java.lang.Object insertVerPlan(@org.jetbrains.annotations.NotNull()
^
我很不知道自己缺少什么,而且自从新的Room版本以来,我找不到遇到相同问题的任何人。
答案 0 :(得分:2)
您要混合使用不同版本的会议室库。
android.arch.persistence.room:runtime
应该是androidx.room:room-runtime
android.arch.persistence.room:compiler
应该是androidx.room:room-compiler
android.arch.persistence.room:testing
应该是androidx.room:room-testing
由于您使用的是旧的编译器坐标,因此它不了解suspend
的支持。