我正在将Android Room与RxJava一起使用
dependencies {
implementation 'androidx.room:room-rxjava2:2.1.0-alpha02'
}
我需要从参数化删除方法中获取Completable,我认为此功能从2.1.0开始添加?例如。
@Query("DELETE FROM message_table WHERE uid = :id")
Completable delete(String id);
@Query("DELETE FROM message_table")
Completable deleteAll();
仍然抛出错误:Deletion methods must either return void or return int (the number of deleted rows).
答案 0 :(得分:2)
错误消息试图告诉您:
使用@Query
,您必须将返回的数据类型从Completable
更改为int
或void
。
Completable
需要订阅另一种方法,该方法运行Dao
的方法:
Completable
.fromAction(aMethodWhichCallsDao)
.subscribeOn(Schedulers.single())
.subscribe();
或按照@Commonsware的建议使用@Delete
注释(以防广告宣传)。
答案 1 :(得分:1)
我不知道您是否需要它,但是今天就进入同一件事,发现您需要使用所有这三个库来创建DAO方法以返回Completable:
implementation 'androidx.room:room-runtime:2.2.1'
kapt 'androidx.room:room-compiler:2.2.1'
implementation 'androidx.room:room-rxjava2:2.2.1'
我希望这会对您有所帮助。