【问题标题】:rxJava, Refresh api data periodicallyrxJava,定期刷新api数据
【发布时间】:2015-12-15 05:04:20
【问题描述】:

我正在使用以下 observable 调用改造 api,然后将响应保存到缓存文件中:

@Override public Observable<StoryCollectionEntity> storyEntityList(final int page) {

       return this.restApi.storyCollection(id, page)
       .doOnNext(saveStoryCollectionToCacheAction)         
   .onErrorResumeNext(CloudNewsDataStore.this.mNewsCache.getStories(page));
            }

这按预期工作。我的问题是:我怎样才能让这个观察者定期返回 api 响应?

假设用户希望每 5 分钟刷新一次数据

【问题讨论】:

  • 好吧,您可能不希望这样,因为每 5 分钟刷新一次数据 = 电池耗尽,因此会失去用户。要智能同步,请使用 SyncAdapter。 Android 操作系统对使用 SyncAdapter 同步数据进行了大量优化,设置起来并不难

标签: android rx-java rx-android


【解决方案1】:

interval() 运算符将在给定的时间间隔发出一个项目。

您可以使用它来触发周期性事件,如下所示:

Observable.interval(5, TimeUnit.MINUTES)
            .flatMap(count -> this.restApi.storeCollection(id, page))
            // etc.

【讨论】:

  • return 语句呢?应该返回 Observable.interval(5, TimeUnit.MINUTES) ...
  • 如果你想返回这个 Observable,那么可以。我的示例不一定要直接放入您的代码中,而是要成为任何人都可以在其代码中使用的示例。
  • 有没有详细的例子.. plz
  • 您还需要多少细节?对于您的特定用例,您只需将interval() 调用和flatMap() 放在您已经拥有的代码之前。
  • 您需要使用 Observable.interval(0, 5, TimeUnit.MINUTES),第一个 0 是初始延迟,在 Observable 发出第一项之前。
猜你喜欢
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
相关资源
最近更新 更多