android - RxJava2 定时器和 combineLatest

标签 android timer rx-java kotlin

RxJava2 有点新 我在使用 timercombineLatest 时遇到问题,例如:

Observable.combineLatest(
  Observable.timer(5, TimeUnit.SECONDS).map { TimedData(it) },
  locationDataSource.listen(),
  sensorDataSource.listen().
  Function3 { timedData, location, sensorEvent -> Combined(timedData, location, sensorEvent) }
).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe {
  Log.d(TAG, "Timer -> " + it.timedData)
}

发生的事情是 timedData 只被更新一次,然后它再也不会触发,所有其他可观察对象都开始更新。 我找到了 https://github.com/ReactiveX/RxJava/issues/1717但它是从 2014 年开始的,所以我认为它已经解决了。

由于 BackPressure,这种情况还会发生吗?

最佳答案

按设计工作。 Observable.timer 为单个延迟执行安排一些任务。 如果你想定期执行某些事情,请尝试使用 interval 而不是 timer

Observable.interval(0,5, TimeUnit.SECONDS);

关于android - RxJava2 定时器和 combineLatest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141083/

相关文章:

javascript - Phonegap 1.0 Android 捕获视频

java - 在java中处理定时器

delphi - 在 Delphi 中编程延迟的最佳方法是什么?

iOS Autologedout - 应用程序在返回时瞬间显示用户屏幕

java - RxJava groupBy 和后续阻塞操作(onComplete 缺失?)

android - 在 Resume 上显示软键盘

android - 从Play商店下载时无法加载应用程序,但可以安装生成的APK

android - 自定义 Toast 定位

android - 动态组合多个 Retrofit Observable

java - RxJava 中的 n 元笛卡尔积