我正在使用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") }
// ...
}
它的工作原理是:
另外,可能您不需要
.timeInterval()
,因为Observable.interval(...)
本身会发出指定速率内的序列号,而.timeInterval()
只是将其转换为发出两次发射之间耗时间隔。