Dans Android j'utilise Timer pour exécuter une tâche qui se répète toutes les 5 secondes et démarre après 1 seconde de cette manière:
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();
cette minuterie se répétera jusqu'à ce que j'appelle timer.cancel()
J'apprends RxJava avec l'extension RxAndroid
J'ai donc trouvé ce code sur Internet, je l'ai essayé et il ne se répète pas:
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
}
});
alors quelle est l'alternative pour le Android Timer dans RxJava.
timer L'opérateur émet un élément après un délai spécifié puis se termine. Je pense que vous cherchez l'opérateur interval.
Subscription subscription = Observable.interval(1000, 5000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Long>() {
public void call(Long aLong) {
// here is the task that should repeat
}
});
si vous voulez l'arrêter, vous appelez simplement se désinscrire sur l'abonnement:
subscription.unsubscribe()
Appelez la méthode Observable.repeat()
pour répéter
Disposable disposable = Observable.timer(3000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.newThread())
.repeat()
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
Si vous voulez l'arrêter, appelez disposable.dispose()