Saya terkejut bahwa tidak ada jawaban yang akan menyebutkan solusi dengan RxJava2 . Ini sangat sederhana dan menyediakan cara mudah untuk mengatur timer di Android.
Pertama, Anda perlu mengatur ketergantungan Gradle, jika Anda belum melakukannya:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(ganti x
dan y
dengan nomor versi saat ini )
Karena kita baru saja memiliki TUGAS TAK BERKAS , sederhana , kita dapat menggunakan Completable
objek:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Untuk REPEATING TASK , Anda dapat menggunakan Observable
cara yang serupa:
Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
// called every 2 seconds, do something...
}, throwable -> {
// handle error
});
Schedulers.computation()
memastikan bahwa timer kami berjalan di utas latar dan .observeOn(AndroidSchedulers.mainThread())
berarti kode yang kami jalankan setelah timer selesai akan dilakukan pada utas utama.
Untuk menghindari kebocoran memori yang tidak diinginkan, Anda harus memastikan untuk berhenti berlangganan saat Aktivitas / Fragmen dihancurkan.