带有Completable的Android房间插入无法正常工作?用@insert注释的方法可以返回void,long?

Man*_*ath 1 android rx-java2 android-room

我使用的版本是

implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
implementation 'android.arch.persistence.room:runtime:2.1.0-alpha04'
kapt 'android.arch.persistence.room:compiler:2.1.0-alpha04'
implementation 'android.arch.persistence.room:rxjava2:2.1.0-alpha04'
Run Code Online (Sandbox Code Playgroud)

道是

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertStore(stores: Stores): Completable
Run Code Online (Sandbox Code Playgroud)

Man*_*ath 14

这篇有关媒介的出色文章中,我发现了这一点。

从Room 2.1.0-alpha01开始,用@ Insert,@ Delete或@Update注释的DAO方法支持Rx返回类型Completable,Single和Maybe

即使我使用的是最新版本的房间,也遇到了问题,

implementation 'android.arch.persistence.room:runtime:2.1.0-alpha04'
kapt 'android.arch.persistence.room:compiler:2.1.0-alpha04'
implementation 'android.arch.persistence.room:rxjava2:2.1.0-alpha04'
Run Code Online (Sandbox Code Playgroud)

我发现问题是由于在项目中使用androidx而发生的,因此为了修复该问题,我不得不使用androidx房间组件。

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
kapt 'androidx.room:room-compiler:2.1.0-alpha04'
implementation 'androidx.room:room-rxjava2:2.1.0-alpha04'
Run Code Online (Sandbox Code Playgroud)