带有RxJava的Android Room处理空查询结果

前端之家收集整理的这篇文章主要介绍了带有RxJava的Android Room处理空查询结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试使用Rx Java适配器测试新的 Android Room librarty.如果我的查询从DB返回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 Flowables是可观察的(因此,如果数据库发生更改,它们将继续调度),因此它永远不会完成.您可以尝试返回List< AuthResponse>.我们已经考虑过移植一个可选项,但决定不这样做,至少目前是这样.相反,我们可能会在不同的已知库中添加对Optional的支持.
原文链接:https://www.f2er.com/android/127459.html

猜你在找的Android相关文章