Hmm, sau vài tháng nghỉ tay, thì hôm nay tui quay trở lại rồi đây...
Mấy nay rảnh rỗi, ngồi ôn lại Reactive programming with RxJava and RxAndroid, tiện thể tui viết mấy dòng chia sẻ (theo cách hiểu của tui) để sau này có quên thì còn vào lướt qua 😅. Nói về Reactive programming thì hiện có nhiều (tràn lan đại hải như RxJava, RxAndroid, RxSwift, Rx...) nhưng trong những bài viết này tui sẽ nói về RxJava, RxAndroid thôi nhé.
. Nôm na là bạn đang lập trình bằng ngôn ngữ Java, hay chung nhất là lập trong Java Android thì bạn cần biết điều này.
What is Reactive programming?
Khái niệm về lập trình phản ứng xoay quanh ý tưởng về các đối tượng có thể quan sát được.
Vì vậy, câu hỏi đầu tiên là ... Chính xác thì một vật thể có thể quan sát được là gì?
Nói một cách đơn giản, một đối tượng có thể quan sát được là một đối tượng có thể được quan sát bởi một thứ khác. Sao cho nếu các thuộc tính của đối tượng đó thay đổi, những người quan sát đối tượng đó sẽ được thông báo. Đây là ý tưởng tương tự như với LiveData và kiến trúc MVVM.
- LiveData là cái có thể quan sát được
- Và bạn có thể có bất kỳ số lượng người quan sát nào đang quan sát nó.
Bây giờ bạn có thể đang nghĩ:
"If you can create observable objects using LiveData, and LiveData is what Google recommends using in their best-practices guide, why should you use RxJava & RxAndroid?"
Tạm hiểu là: "Nếu bạn có thể tạo các đối tượng có thể quan sát bằng LiveData và LiveData là thứ mà Google đề xuất sử dụng trong hướng dẫn các phương pháp hay nhất của họ, thì tại sao bạn nên sử dụng RxJava & RxAndroid?"
Và tui muốn nói trong hồ sơ:
Nhiều thứ mà RxJava và RxAndroid được sử dụng có thể được thực hiện dễ dàng hơn với LiveData và kiến trúc thích hợp như MVVM.
Tuy nhiên, vẫn còn đủ các lợi ích khác mà nó rất đáng để biết. Chưa kể mọi công việc Android bạn ứng tuyển đều mong đợi kiến thức về RxJava. Nhưng họ có thể không mong đợi bạn biết về LiveData và MVVM, Nhưng họ có thể không mong đợi bạn biết về LiveData và MVVM. Vì vậy, một cách đặt cược an toàn là học RxJava.
Why you should Learn RxJava & RxAndroid
Theo ý kiến của tui, đối với sự phát triển của Android, lợi ích thực sự của việc sử dụng RxJava & RxAndroid là gấp đôi:
- Operators (Toán tử)
- Nó có các toán tử mạnh mẽ làm cho việc tạo các đối tượng có thể quan sát rất đơn giản.
- Bạn có thể tạo các quan sát từ danh sách, mảng, đối tượng dữ liệu tùy chỉnh, kết hợp nhiều quan sát (observables) thành một ... Bạn có thể sắp xếp(sort), lọc(filter), tìm max, min ... và còn nhiều hơn thế nữa.
- Threading (Luồng)
- Bạn có thể dễ dàng chuyển dữ liệu qua lại giữa các luồng.
- Chạy các tác vụ trên một chuỗi nền (background thread)
- Truy xuất kết quả trên chuỗi chính (main thread)
- Hoặc ngược lại. Nó không quan trọng. Nó làm cho việc phân luồng trở nên vô cùng đơn giản. RxJava và RxAndroid là để thay thế cho AsyncTask. Bạn sẽ không bao giờ sử dụng nó nữa. 😛😛
The Punchline
Tui chắc rằng bạn nhận thấy rằng tôi đã không đề cập đến những người quan sát hoặc có thể đăng ký những người quan sát và phản ứng với những thay đổi trong phần "Why you should Learn RxJava & RxAndroid" ở trên. Đó là bởi vì (theo ý kiến của tôi), LiveData và kiến trúc MVVM thực hiện điều này tốt hơn.
- Nó dễ hơn
- Bạn có thể làm điều tương tự với ít mã hơn (hầu hết thời gian)
- Và nó dẫn đến một cấu trúc mã rõ ràng hơn nhiều (lý do yêu thích của tôi)
Nhưng một lần nữa, RxJava và RxAndroid vẫn rất đáng để biết! Nó có các toán tử và chức năng phân luồng rất mạnh mẽ.
Đăng nhận xét
Cảm ơn bạn đã quan tâm và bày tỏ :D