In android i use Timer to execute task that repeats every 5 seconds and starts after 1 second in this way:
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();
this timer will repeat Until i call timer.cancel()
I am learning RxJava with RxAndroid extension
So i found this code on internet, i tried it and it doesnt repeat:
Observable.timer(3000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1() {
@Override
public void call(Long aLong) {
// here is the task that should repeat
}
});
so what is the alternative for the android Timer in RxJava.
解决方案
timer operator emits an item after a specified delay then completes. I think you looking for the interval operator.
Subscription subscription = Observable.interval(1000, 5000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1() {
public void call(Long aLong) {
// here is the task that should repeat
}
});
if you want to stop it you just call unsubscribe on the subscription:
subscription.unsubscribe()
博客围绕Android中Java代码定时任务避免重复展开。先介绍了使用Timer实现定时重复任务及停止方法,接着提到学习RxJava时遇到代码不重复的问题,最后给出解决方案,即使用interval操作符实现定时重复任务,还说明了停止任务的方法。
655

被折叠的 条评论
为什么被折叠?



