尝试使用RxJava适配器测试新的Android Room librarty。如果查询从数据库返回0个对象,我想处理结果:

所以这是DAO方法:

@Query("SELECT * FROM auth_info")
fun getAuthInfo(): Flowable<AuthResponse>

以及我的处理方式:
        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) })

我的数据库是空的,因此我希望.switchIfEmty()可以正常工作,但是没有触发任何处理方法。 .subscribe()和.switchIfEmpty()都不

最佳答案

Db Flowable是可观察的(因此,如果数据库发生更改,它们将继续调度),因此它永远不会完成。您可以尝试返回List<AuthResponse>。我们已经考虑过向后移植可选内容,但至少现在不决定这样做。相反,我们可能会在不同的已知库中添加对Optional的支持。

07-24 09:36