首页 > 解决方案 > 在Android中使用Room插入数据时,获取Single作为回报而不是长

问题描述

我正在使用 Room 在 SQLite DB 中插入数据,如下所示。插入查询可以返回 void、long 或 long 数组。当我使用 RxJava 在工作线程上插入和检索对象时,有什么方法可以获得 Single 。

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun addNotification(notification: Notification): Single<Long>

标签: androidandroid-roomandroid-architecture-components

解决方案


从版本 2.1.0-alpha01 开始,@Insert 注解的方法可以返回 Single。

额外的 Rx 返回类型支持:使用 @Insert、@Delete 或 @Update 注释的 DAO 方法现在支持 Rx 返回类型CompletableSingleMaybe。b/63317956

来源:https ://developer.android.com/jetpack/androidx/releases/room#2.1.0-alpha01

因此,您只需要使用可用的最新版本即可:

implementation("androidx.room:room-rxjava2:2.1.0-alpha06")

推荐阅读