RxJava 3 对 Room 的支持

Fir*_*cle 5 android rx-java android-room rx-java3

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

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

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

@Query("SELECT * FROM wishlist_table")
Flowable<List<WishListMovie>> getWishList();
Run Code Online (Sandbox Code Playgroud)

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

implementation "androidx.room:room-rxjava2:$room_version"
Run Code Online (Sandbox Code Playgroud)

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

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

ser*_*nov 8

2020 年 7 月 22 日

Room 2.3.0-alpha02中添加了对 RxJava3 类型的支持。虽然它仍处于 alpha 阶段,但你可以考虑这个选项。

根据发布说明:

与 RxJava2 类似,您可以声明返回类型为 Flowable、Single、Maybe 和 Completable 的 DAO 方法。
另外一个新的工件 androidx.room:room-rxjava3可用于支持 RxJava3


Han*_*rst 3

问题

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

结果

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

解释

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

解决方案

在 room-rxjava3 包出现之前,您必须使用 RxJava2 作为依赖项。

解决方法

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