Android 数据类型为 RxJava Observable<> 的房间出现编译错误
Android Room with RxJava Observable<> as data type giving compilation error
对于以下代码,我收到此错误:
错误:(26, 31) 错误:不确定如何将 Cursor 转换为此方法的 return 类型
@Dao
public interface FriendsDao {
@Query("SELECT * FROM Friends")
Flowable<List<Friends>> getAllFriends();
@Query("select * from Friends")
Observable<List<Friends>> getAllFriendsExample();
}
上面如果我删除 getAllFriendsExample() 一切正常我不明白为什么上面的代码适用于 flowable 但不适用于 observable。
任何人都可以帮助解决上述问题。
提前致谢
您收到错误消息是因为 Room 不支持 RxJava(1) Observable
类型。
对于 observable queries Room 支持来自 RxJava2 的 LiveData
和 Publisher
以及 Flowable
。
因为你需要这个来使用 Frodo(来自评论)并且 Frodo2 有一个错误你的选择是:
- 等待库作者修复
- 将你的 DAO class 放在存储库后面并使用 RxJava2Interop 将
Flowable
转换为 RxJava1 Observable
这样你就可以使用 Frodo (v1)
由于 RxJava 1 已达到 End of Live,因此不推荐使用选项 2。
对于以下代码,我收到此错误:
错误:(26, 31) 错误:不确定如何将 Cursor 转换为此方法的 return 类型
@Dao
public interface FriendsDao {
@Query("SELECT * FROM Friends")
Flowable<List<Friends>> getAllFriends();
@Query("select * from Friends")
Observable<List<Friends>> getAllFriendsExample();
}
上面如果我删除 getAllFriendsExample() 一切正常我不明白为什么上面的代码适用于 flowable 但不适用于 observable。 任何人都可以帮助解决上述问题。
提前致谢
您收到错误消息是因为 Room 不支持 RxJava(1) Observable
类型。
对于 observable queries Room 支持来自 RxJava2 的 LiveData
和 Publisher
以及 Flowable
。
因为你需要这个来使用 Frodo(来自评论)并且 Frodo2 有一个错误你的选择是:
- 等待库作者修复
- 将你的 DAO class 放在存储库后面并使用 RxJava2Interop 将
Flowable
转换为 RxJava1Observable
这样你就可以使用 Frodo (v1)
由于 RxJava 1 已达到 End of Live,因此不推荐使用选项 2。