RXJava ...每秒发射一次可观测的数据
问题描述:
我使用RXJava在Android中制作一个计时器...我需要在RXJava中制作一个计时器,每秒发射一次可观测数据。我尝试了以下...但没有运气。有什么想法我做错了什么?RXJava ...每秒发射一次可观测的数据
Observable.interval(
1000L,
TimeUnit.MILLISECONDS)
.timeInterval()
.observeOn(AndroidSchedulers.mainThread())
.subscribe({Log.d(LOG_TAG, "&&&& on timer") })
答
您的代码似乎不被调用。检查它是否被执行以及何时执行。至于与Observable
合作,这是完全正确的。
例如,我把你的代码片段里面我MainActivity
onCreate(...)
:
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()
只是将其转换为发出排放之间所经过的时间间隔。
答
在你subscribe()
你并不会消耗年代由timeInterval()
运算符的longTimeInterval
对象。
正确的版本:
.subscribe(longTimeInterval -> {
Log.d(LOG_TAG, "&&&& on timer");
}
此外我认为你不需要timeInterval()
运营商都没有。 Observable.interval()
会在你的情况下每秒钟发出一个可观察的数据,我猜是你想要的。 timeInterval()
转换为可观察到的两个事件之间的确切时间差发生,我怀疑你会需要。
我不需要.timeInterval():)我删除它,但仍然无效:/ – fergdev