当前位置: 首页 > 知识库问答 >
问题:

使用带空间的kotlin协程

阎昌勋
2023-03-14

在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()
                                     ^

我真的不知道我错过了什么,自从新的房间版本以来,我找不到有同样问题的人。

共有1个答案

杜经艺
2023-03-14

你在混合不同版本的房间图书馆。

android。拱坚持不懈房间:运行时应该是androidx。房间:房间运行时

android。拱坚持不懈房间:编译器应该是androidx。房间:房间编译器

android.arch.persistence.room:测试应该是androidx.room:房间测试

按照房间#声明依赖关系

因为编译器使用的是旧坐标,所以它不知道suspend支持。

 类似资料:
  • 使用Gradle 4.4.1和静态编程语言-DSL,我想在我的静态编程语言1.2.20项目中配置实验性的静态编程语言协程。这被证明是出奇困难的。 官方静态编程语言留档本身只提到Groovy DSL的Gradle,而不是静态编程语言。 Kotlin DSL项目有一个不起作用的协同路由示例。可能是针对较旧的Gradle版本(该脚本中的Kotlin版本为1.1.51,这本身就是可疑的)。 PS:甚至In

  • 本文向大家介绍Android kotlin+协程+Room数据库的简单使用,包括了Android kotlin+协程+Room数据库的简单使用的使用技巧和注意事项,需要的朋友参考一下 Room Room是Google为了简化旧版的SQLite操作专门提供的 1.拥有了SQLite的所有操作功能 2.使用简单(类似于Retrofit),通过注解的方式实现相关功能。编译时自动生成实现类impl 3.L

  • Kotlin Coroutines question...使用属性而不是函数作为异步调用的访问器。 背景是我试图将与库一起使用,以便在而不是添加回调... 目前有一个属性getter调用挂起函数,但不确定如何正确启动协程以避免 所需单位找到XYZ 错误... 关于如何处理这个问题的任何想法?

  • 我转换java代码到kotlin代码,我得到类型未解决的java类错误。 我的Java类是 已转换的Kotlin类 非常感谢。

  • 我在Java中经常使用AOP。看起来传统的java方法很容易在Kotlin中重用。鉴于Kotlin强调不变性,JDK代理似乎是Kotlin中最可行的解决方案,前提是您遵循相同的接口优先(在Kotlin中更好地说是特征优先)编程风格,例如: 因此,现在可以很容易地用Spring/AOP编写一个方面,并将其应用到MyServiceImpl实例中。应该提到的是,基于Java接口生成的代理可能更受Kotl

  • 我有一个传统的SpringMVC(servlet堆栈)应用程序,它使用。在最近的Spring启动 2.2.0 版本中,为反应式堆栈 (webflux) 添加了 Kotlin 协程支持。我想知道在(servlet 堆栈)Spring MVC 中使用时,是否可行将 Kotlin 协程与 Web 客户端一起使用。