我在使用 RxJava 的 Retrofit 和 Realm 中遇到了一个问题:我有一个使用 Observable.just(realm.copyFromRealm(realm.where(FooBar.class).findAll()))
可观察的领域和一个使用 mFooBarService.getFooBars()
可观察的改造。
我想将它们结合起来,以便首先数据库(领域),然后 api(改造)发出数据。我通过连接它们来做到这一点:Observable.concat(realmObservable, apiObservable)
这很好用。我还可以停止我的 api 服务器,一切正常,因为数据库有数据。现在的问题是:如果我关闭手机上的网络(wifi,移动数据),观察者不会收到任何数据。我以为观察者首先接收数据库数据,然后是超时或连接错误?相反,我只收到一个错误。
提前谢谢你!
编辑:
好的,我试着澄清我的意思。
如果我有网络连接但服务器已关闭,则如下所示:
realmObservable.concat(apiObservable)
-----A---B---C---D---|---ERROR-------->
所以我得到数据,然后是一个错误
但是当服务器关闭时,它看起来像上面这样,但我只收到错误而不是首先数据。
我希望你现在理解我。
您正在收到来自 Retrofit 而不是来自 Realm 的错误调用。您的 Realm + Retrofit 串联设计似乎很好,您在这里缺少的是没有互联网连接时 Retrofit 的错误处理。你可以通过注释所有 Realm 代码来验证这一点,但仍然收到错误。
有两种方法可以解决此问题,
- 在进行改造之前检查互联网连接的可用性叫
- 在改造中添加自定义错误处理