Ich bin überrascht, dass es keine Antwort gibt, die eine Lösung mit RxJava2 . Es ist wirklich einfach und bietet eine einfache Möglichkeit, Timer in Android einzurichten.
Zuerst müssen Sie die Gradle-Abhängigkeit einrichten, falls Sie dies nicht bereits getan haben:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(ersetzen x
y y
con aktuelle Versionsnummer )
Denn wir haben nur eine einfache, NICHT WIEDERKEHRENDE AUFGABE können wir verwenden Completable
Objekt:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Für WIEDERHOLENDE AUFGABE können Sie verwenden Observable
in ähnlicher Weise:
Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
// called every 2 seconds, do something...
}, throwable -> {
// handle error
});
Schedulers.computation()
stellt sicher, dass unser Timer auf einem Hintergrund-Thread läuft und .observeOn(AndroidSchedulers.mainThread())
bedeutet, dass der Code, der nach Beendigung des Timers ausgeführt wird, im Hauptthread ausgeführt wird.
Um unerwünschte Speicherlecks zu vermeiden, sollten Sie sicherstellen, dass Sie sich abmelden, wenn die Aktivität/das Fragment zerstört wird.