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 xdan ydengan nomor versi saat ini )
Karena kita baru saja memiliki TUGAS TAK BERKAS , sederhana , kita dapat menggunakan Completableobjek:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Untuk REPEATING TASK , Anda dapat menggunakan Observablecara 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.