禁用网络会停止从领域

时间:2016-07-08 20:53:39

标签: android retrofit realm rx-java retrofit2

我遇到 Retrofit Realm RxJava 的问题: 我使用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--------> 所以我得到了数据,然后出现了错误 但是当服务器关闭时,它看起来也是如此,但我只得到一个错误而不是数据 我希望你现在了解我。

1 个答案:

答案 0 :(得分:0)

您正在从Retrofit获取onError调用,而不是来自Realm。你的Realm + Retrofit串联设计似乎很好,你在这里缺少的是没有互联网连接时Retrofit的错误处理。您可以通过注释所有Realm代码并仍然收到错误来验证这一点。

有两种方法可以解决这个问题,

  • 在进行改造之前检查互联网连接的可用性 致电
  • 在改造中添加自定义错误处理