RxJava - 每秒发出一个可观察量

fer*_*dev 11 java android system.reactive kotlin rx-java

我正在使用RxJava在Android中制作计时器.我需要在RxJava中创建一个计时器,每秒发出一个可观察量.我尝试过以下但没有运气.对我做错了什么的想法?

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

hot*_*key 25

您的代码似乎没有被调用.检查是否执行以及何时执行.在使用时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") }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

它有效:

https://www.dropbox.com/s/jxkm5ol8l5idyji/observable_interval.png?dl=0

此外,您可能不需要.timeInterval()因为Observable.interval(...)它本身会以指定的速率发出连续数字,.timeInterval()只需将其转换为发出排放之间经过的时间间隔.

  • @KaranSharma,您可以用一次性包装它,这意味着您可以编写类似“disposable = Observable.interval()....”的内容,然后在 Activity 的 onDestroy 中使用“disposable.dispose()” (2认同)