Hướng dẫn RxJava: Giới thiệu

Chào mọi người, hôm nay mình sẽ quyết định viết 1 seri về chủ đề Reactive Programming, cụ thể ở đây là RxJava. Đây là thư viện mà có lẽ rất rất nhiều dự án Android đã đang và sẽ sử dụng (mặc cho sự phát triển và cải thiện không ngừng của Kotlin Coroutine, Flow :D). Vì vậy mình quyết định viết seri này. Mục tiêu hướng đến của seri này là những anh em dev chưa tiếp cận hoặc mới tiếp cận và muốn tìm hiểu thêm với Reactive Programming, cụ thể là RxJava. OK. Start thôi.

[toc]

Vậy Reactive Programming là cái cóc khô gì?

Reactive Programming là 1 mô hình lập trình liên quan đến luồng dữ liệu và sự thông báo khi có sự thay đổi về dữ liệu. WTF? Nói cái gì thế??? Nghe không hiểu mô tê gì.

Để dễ hiểu hơn thì hãy cùng mình xét một bài toán đơn giản: Cộng 2 số nguyên.

Với cách lập trình truyền thống, bài toán sẽ được giải như sau:

void normalAddition() {
    int a = 1;
    int b = 2;
    int sum = a + b;
    Log.d(TAG, "Ket qua: "+ sum);
}

Khi chạy hàm này thì kết quả sẽ thu được là:

Ket qua: 3.

OK không vấn đề gì.

Giờ ta hãy thay đổi hàm normalAddition này một chút, ta sẽ cập nhật giá trị cho biến A và kiểm tra lại kết qủa của biến sum:

void normalAddition() {
    int a = 1;
    int b = 2;
    int sum = a + b;
    Log.d(TAG, "Ket qua: "+ sum);
    a = 3;
    Log.d(TAG, "Ket qua: "+ sum);
}

Khi chạy lại thì được kết quả:

Ket qua: 3

Ket qua: 3

Như vậy ta thấy vấn đề là sum không được cập nhật giá trị mặc dù a đã được cập nhật.

Còn đối với Reactive programming, khi biến a thay đổi thì biến sum cũng sẽ được thông báo về sự thay đổi này, và có hành động xử lý, dĩ nhiên là update lại giá trị rồi :D.

Hãy hình dung như ở trang tính excel, khi bạn update giá trị của a, thì giá trị của sum cũng sẽ được tự động update theo vậy.

Nói tóm lại Reactive programming là mô hình lập trình mà trong đó, mọi sự thay đổi của 1 đối tượng đều được thông báo đến những đối tượng đang theo dõi nó. Như ở ví dụ trên là sum đang theo dõi ab.

 

RXJava

RxJava là một thư viện hỗ trợ Reactive programming viết riêng cho Java. Rõ ràng rồi, chúng ta đâu cần chế tạo lại cái bánh xe, cũng đủ thời gian để implement từng đối tượng, cho chúng theo dõi nhau theo 1 cách thủ công được. Vậy ta cần 1 thư viện hỗ trợ ta điều đó, thư viện này là RxJava.

Trong seri này ta sẽ tìm hiểu các tính năng hữu ích nhất của RxJava để sử dụng trong quá trình phát triển. Mình cũng sẽ đưa ra từng use case cho từng tính năng để các bạn dễ hình dung.

Bài viết tiếp theo mình sẽ giới thiệu về 2 khái niệm cơ sở của RxJava và cách chúng ta làm việc với chúng.

Cảm ơn đã đọc bài viết. Hẹn gặp lại.

[toc]

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *