Tôi ngạc nhiên rằng không có câu trả lời nào đề cập đến giải pháp với RxJava2 . Nó thực sự đơn giản và cung cấp một cách dễ dàng để thiết lập bộ đếm thời gian trong Android.
Trước tiên, bạn cần thiết lập phụ thuộc Gradle, nếu bạn chưa làm như vậy:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(thay thế x
và y
với số phiên bản hiện tại )
Vì chúng ta chỉ có một NHIỆM VỤ KHÔNG SỬA CHỮA đơn giản , chúng ta có thể sử dụng Completable
đối tượng:
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
Đối với NHIỆM VỤ REPEATING , bạn có thể sử dụng Observable
theo cách tương tự:
Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
// called every 2 seconds, do something...
}, throwable -> {
// handle error
});
Schedulers.computation()
đảm bảo rằng bộ định thời của chúng tôi đang chạy trên luồng nền và .observeOn(AndroidSchedulers.mainThread())
có nghĩa là mã chúng tôi chạy sau khi kết thúc bộ hẹn giờ sẽ được thực hiện trên luồng chính.
Để tránh rò rỉ bộ nhớ không mong muốn, bạn nên đảm bảo hủy đăng ký khi Activity / Fragment bị hủy.