android - rxjava 使用房间时遇到问题
问题描述
我是 RxJava 的新手,我想知道将 RxJava 与 android room 集成的最佳方法是什么。我已经看到了两种方法:
1.
@Dao
interface UserDao{
@Insert
void insert(User user);
}
class Repository {
public Completable <Boolean> insertUser(final User user) {
return Completable.fromCallable(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
mAppDatabase.userDao().insert(user);
return true;
}
});
}
}
2.
@Dao
interface UserDao{
@Insert
Completable insert(User user);
}
那么上述代码之间有什么区别吗?哪个是更好的方法?
解决方案
Room 支持 RxJava2。您可能需要添加依赖项android.arch.persistence.room:rxjava2:$version
。
此外,从 Room 2.1.0-alpha01 开始,使用 @Insert、@Delete 或 @Update 注释的 DAO 方法支持 Rx 返回类型 Completable。
我建议您查看以下文章,您可以在其中找到详细说明 - Room RxJava。
结果,您的 DAO 将如下所示,并且无需在存储库中转换为 rx 类型:
@Dao
interface UserDao{
@Insert
Completable insert(User user);
}
}
推荐阅读
- raspberry-pi - 无法找到包 ros-kinetic-depthimage-to-laserscan(在 Raspberry Pi 上)
- css - 带列的水平布局:如何在列大小固定且列数未知的情况下自动调整容器大小
- google-app-engine - 从 Golang AppEngine 快速轻松地发布到 Slack Webhook
- google-sheets - 将一个单元格链接到多个单元格排除 Google 表格中的中间范围
- php - 无法获取 coingecko API 的信息
- admob - 如何通过代码从 aerserv 关闭全屏横幅广告?
- php - \n 用文本打断显示,如何显示换行符而不是 \n 文本
- npm - 在本地运行 Jhipster-registry,无需浏览器同步
- android - 首次获取后观察到的 LiveData 并没有真正更新
- flutter - 颤振中有消息获取方法吗?