我正在使用RxJava在Android中创建计时器。我需要在RxJava中创建一个计时器,以每秒发出一个可观察的信号。我尝试了以下方法,但是没有运气。对我在做什么错有任何想法吗?

Observable.interval(1000L, TimeUnit.MILLISECONDS)
          .timeInterval()
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe({Log.d(LOG_TAG, "&&&& on timer") })

最佳答案

您的代码似乎没有被调用。检查它是否执行以及何时执行。在使用Observable时,它是完全正确的。

例如,我将您的代码段放在onCreate(...)MainActivity中:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Observable.interval(1000L, TimeUnit.MILLISECONDS)
            .timeInterval()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe { Log.d("tag", "&&&& on timer") }
    // ...
}

它的工作原理是:

java - RxJava-每秒发出一个可观察的信号-LMLPHP

另外,可能您不需要.timeInterval(),因为Observable.interval(...)本身会发出指定速率内的序列号,而.timeInterval()只是将其转换为发出两次发射之间耗时间隔。

10-08 14:12