在Android中,我使用计时器执行任务,每5秒重复一次,并在1秒后开始,以这种方式:
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Here is the repeated task
}
}, /*Start after*/1000, /*Repeats every*/5000);
// here i stop the timer
timer.cancel();
这个计时器将重复直到我调用timer.cancel()
我正在使用RxAndroid扩展学习RxJava
所以我发现这个代码在互联网上,我试了一下,它不重复:
Observable.timer(3000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Long>() {
@Override
public void call(Long aLong) {
// here is the task that should repeat
}
});
那么,RxJava中的android定时器的替代方案是什么?
5条答案
按热度按时间gk7wooem1#
timer操作符在指定的延迟后发出一个项目,然后完成。我认为你在寻找interval操作符。
如果你想停止它,你只是调用取消订阅的订阅:
xnifntxz2#
调用
Observable.repeat()
方法重复如果你想阻止它,请调用
disposable.dispose()
ctehm74n3#
Kotlin方式
ff29svar4#
这是%100正确且安全的工作方式:
为了阻止它:
1aaf6o9v5#
我创建了这个方法,用于将时间从viewModel发送到View: