【发布时间】:2018-03-14 15:16:47
【问题描述】:
我有 2 个数据源:数据库和服务器。当我启动应用程序时,我从存储库(MyRepository)中调用方法:
public Observable<List<MyObj>> fetchMyObjs() {
Observable<List<MyObj>> localData = mLocalDataSource.fetchMyObjs();
Observable<List<MyObj>> remoteData = mRemoteDataSource.fetchMyObjs();
return Observable.concat(localData, remoteData);
}
我订阅如下:
mMyRepository.fetchMyObjs()
.compose(applySchedulers())
.subscribe(
myObjs -> {
//do somthing
},
throwable -> {
//handle error
}
);
我希望从数据库中加载数据会更快,当网络数据下载完成后,我会简单地更新Activity中的数据。
连接互联网后,一切正常。但是当我们在没有连接到网络的情况下打开应用程序时,mRemoteDataSource.fetchMyObjs(); 会抛出 UnknownHostException 并且所有 Observable 都将结束(localData 的订阅者不起作用(尽管日志显示数据库中的数据已被获取)) .当我尝试从 MyRepository 类(通过 SwipeRefresh)再次调用 fetchMyObjs() 方法时,localData 的订阅者被触发。
我怎样才能摆脱这样的事实,即当网络关闭时,当应用程序启动时,订阅者是否为localData工作?
【问题讨论】:
标签: java android rx-java rx-java2