Ich bin überrascht, dass es keine Antwort gibt, die eine Lösung mit RxJava2 erwähnen würde . Es ist wirklich einfach und bietet eine einfache Möglichkeit, den Timer in Android einzurichten.
Zuerst müssen Sie die Gradle-Abhängigkeit einrichten, falls Sie dies noch nicht getan haben:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(ersetzen x
und y
durch aktuelle Versionsnummer )
Da wir nur eine einfache, NICHT WIEDERHOLENDE AUFGABE haben , können wir Completable
Objekt verwenden:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Für REPEATING TASK können Sie Observable
auf ähnliche Weise Folgendes verwenden :
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 im Hintergrund-Thread ausgeführt wird, und .observeOn(AndroidSchedulers.mainThread())
bedeutet, dass Code, den wir nach Ablauf des Timers ausführen, im Haupt-Thread ausgeführt wird.
Um unerwünschte Speicherverluste zu vermeiden, sollten Sie sicherstellen, dass Sie sich abmelden, wenn Aktivität / Fragment zerstört wird.