Me sorprende que no haya una respuesta que mencione la solución con RxJava2 . Es realmente simple y proporciona una manera fácil de configurar el temporizador en Android.
Primero debe configurar la dependencia de Gradle, si aún no lo hizo:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(reemplazar x
y y
con el número de versión actual )
Como solo tenemos una TAREA simple, NO REPETITIVA , podemos usar Completable
object:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Para REPETIR TAREA , puede usar Observable
de una manera similar:
Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
// called every 2 seconds, do something...
}, throwable -> {
// handle error
});
Schedulers.computation()
garantiza que nuestro temporizador se ejecute en el subproceso de fondo y .observeOn(AndroidSchedulers.mainThread())
significa que el código que ejecutamos después de que el temporizador finalice se realizará en el subproceso principal.
Para evitar pérdidas de memoria no deseadas, debe asegurarse de darse de baja cuando se destruya Actividad / Fragmento.