Nik*_*sky 8 android kotlin rx-java2 android-room
尝试使用RxJava适配器测试新的Android Room librarty.如果我的查询从DB返回0个对象,我想处理结果:
所以这是DAO方法:
@Query("SELECT * FROM auth_info")
fun getAuthInfo(): Flowable<AuthResponse>
Run Code Online (Sandbox Code Playgroud)
以及我如何处理它:
database.authDao().getAuthInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.switchIfEmpty { Log.d(TAG, "IS EMPTY") }
.firstOrError()
.subscribe(
{ authResponse -> Log.d(TAG, authResponse.token) },
{ error -> Log.d(TAG, error.message) })
Run Code Online (Sandbox Code Playgroud)
我的数据库是空的,所以我希望.switchIfEmty()可以工作,但是处理方法都没有被触发.既没有.subscribe()也没有.switchIfEmpty()
Db Flowables是可观察的(因此,如果数据库发生更改,它们将继续调度),因此它永远不会完成.你可以试试回来List<AuthResponse>.我们已经考虑过移植一个可选项,但决定不这样做,至少目前是这样.相反,我们可能会在不同的已知库中添加对Optional的支持.
小智 7
在版本1.0.0-ALPHA5,房间增加了支持的Maybe和Single以DAO的,所以现在你可以写类似
@Query("SELECT * FROM auth_info")
fun getAuthInfo(): Maybe<AuthResponse>
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
6740 次 |
| 最近记录: |