RxJava 3 对 Room 的支持



我在项目中将 RxJava3 与 Room 一起使用,但出现以下错误

错误:不确定如何将游标转换为此方法的返回类型 (io.reactivex.rxjava3.core.Flowable>(

下面是我收到错误的DAO接口方法

@Query("SELECT * FROM wishlist_table")
Flowable<List<WishListMovie>> getWishList();

我想可能是因为我在我的成绩文件中使用了下面的依赖项:

implementation "androidx.room:room-rxjava2:$room_version"

我试图找到上述RxJava 3的依赖项,但找不到它。

我想知道如何将 RxJava 3 与 Room 一起使用,或者我应该在我的项目中使用 RxJava 2。

2020 年 7 月 22 日

在房间2.3.0-alpha02中添加了对RxJava3类型的支持。 虽然它仍处于 alpha 阶段,但您可以考虑此选项。

根据发布说明:

与 RxJava2 类似,您可以声明返回类型 可流动、单一、可能和可组合.
此外,还有一个新工件androidx.room:room-rxjava3可用于支持 RxJava3

问题

我想知道如何将 RxJava 3 与 Room 一起使用,或者我应该在我的项目中使用 RxJava 2。

结果

您不能将 RxJava3 与 Room "room-rxjava2" 依赖项一起使用。

解释

RxJava2 和 RxJava3 是不同的。为了避免运行时错误(例如在链接期间(,RxJava3选择了不同的包。这就是返回的类型不匹配的原因(不同的包(

溶液

在有room-rxjava3软件包之前,你必须使用RxJava2作为依赖项。

解决方法

您可以签出room-rxjava2并更改rxjava3的所有软件包并编译aginst rxjava3,然后使用此软件包。

当前正在更新项目并遇到相同的问题。

我正在使用room-rxjava2来生成带有RxJava2类型的DAO(像以前一样(。 但是对于我的业务逻辑,我正在使用 https://github.com/akarnokd/RxJavaBridge 转换为 RxJava3 类型。

另一种解决方案是不在 Dao 上使用反应式类型,而是在存储库中有一个反应式包装器

相关内容

  • 没有找到相关文章

最新更新