Introduction

  • Một vấn đề khá phổ biến mà các lập trình viên Android gặp phải là 'chạy một hàm' (running a method' hoặc 'thực thi một số loại quy trình' (executing some kind of process) tại một khoảng thời gian cụ thể hoặc độ trễ nhất định.
  • Thông thường, chức năng như thế này được triển khai bằng Runnable và Handler với lời gọi phương thức postDelayed ().
  • Dưới đây là một ví dụ trong đó log sẽ in tổng thời gian đã trôi qua sau mỗi 1 giây cho đến khi tệp có thể chạy được thực hiện 5 lần lặp:

Output:

MainActivity: run: 1
MainActivity: run: 2
MainActivity: run: 3
MainActivity: run: 4
MainActivity: run: 5


Nhận xét: Tuy nhiên với cách sử dụng trên thì cũng đáp ứng được bài toán sau thời gian bao nhiêu thì làm việc gì đó, nhưng nó hơi rườm ra, và càng thêm nhiều tính năng thì càng khó khăn.
RxJava có các toán tử liên quan đến thời gian khác nhau để hỗ trợ loại việc này.

interval()

  • Toán tử interval trả về một đối tượng Có thể quan sát phát ra một chuỗi vô hạn các số nguyên tăng dần, với khoảng thời gian không đổi do bạn chọn giữa các lần phát ra.
  • Tui đang sử dụng toán tử takeWhile () để thực hiện kiểm tra từng giá trị được phát ra. Nếu giá trị lớn hơn 5, các kết quả có thể quan sát được sẽ ngừng phát ra.

The Observable:

Subscribe to the Observable:

Output:

MainActivity: onNext: interval: 0
MainActivity: onNext: interval: 1
MainActivity: onNext: interval: 2
MainActivity: onNext: interval: 3
MainActivity: onNext: interval: 4
MainActivity: onNext: interval: 5


timer()

Toán tử Timer tạo một Quan sát có thể phát ra một mục cụ thể sau một khoảng thời gian mà bạn chỉ định.

The Observable:

Subscribe to the Observable:

Output:

MainActivity: onNext: 3 seconds have elapsed.


Post a Comment

Cảm ơn bạn đã quan tâm và bày tỏ :D

أحدث أقدم