如果缓存过期,则从Api获取RxJava

时间:2018-03-22 13:01:52

标签: android realm retrofit2 rx-java2

我需要从Api查询数据然后将其保存到Realm对象。我需要从领域对象获取Presenter的数据(可观察),除非从最后一个Api查询开始经过5分钟,在其他情况下我需要再次从Api获取。我是RxJava的新手。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以创建一个托管destinationColumnIndex的类和一些更新逻辑:

TemplateColumn

答案 1 :(得分:0)

如何设置两个不同的可观察量:

1。)观察领域数据:

realm.where(MyData.class)
     .findAllAsync()
     .asFlowable()
     .filter(RealmResults::isLoaded)
     .subscribe(...);

2。)每5分钟获取一次数据

Observable.interval(5, TimeUnit.MINUTES)
          .subscribeOn(Schedulers.io())
          .switchMap((ignored) -> {
              return apiService.getData();
          })
          .subscribe((data) -> {
              try(Realm realm = Realm.getDefaultInstance()) {
                  realm.executeTransaction((r) -> {
                      r.insertOrUpdate(data);
                  }); 
              }
          });

编辑:然后只需调用类似

的方法
flowable = realm.where(MyData.class)
     .findAllAsync()
     .asFlowable()
     .filter(RealmResults::isLoaded)
     .subscribe(...);

if(cache.isOlderThanFiveMinutes()) {
    startRefreshTaskOnBackgroundThread();
}