Tìm Hiểu Về Rx Java

Trước mình làm dự án Javascript với Nodejs, mình buộc phải làm việc rất nhiều với tứ duy phía sự kiện. Thời điểm đó mình cứ nghĩ về rằng có lẽ rằng kiểu lập trình phía sự khiếu nại này chỉ tương thích trên website app, hay rõ ràng là Javascript nhưng mà thôi.

Bạn đang xem: Tìm hiểu về rx java

Với những ứng dụng Android, chúng ta đã quá không còn xa lạ với bí quyết viết code tuần tự, hay còn gọi là lập trình đồng bộ. Giờ đây, với tứ duy lập trình phía sự kiện tốt bất đồng nhất đó sẽ lan sang cả các dự án xây dựng ứng dụng Android.

Không biết vì chưng mình cổ hủ, lạc hậu hay giờ tín đồ ta mới thông dụng thư viện này. Thư viện đó đó là Rx
Java, một tủ sách để hỗ trợ việc viết vận dụng Android theo kiểu hướng sự kiện.

Nếu bạn đang có ý định tìm hiểu hoặc đã mày mò trước đó rồi. Nhưng vẫn còn đấy mơ hồ về Rx
Java thì nội dung bài viết này dành cho bạn. Mình sẽ phân tích và lý giải theo cách đơn giản dễ dàng nhất rất có thể để các chúng ta cũng có thể hiểu rõ Rx
Java.

 

Nội dung chủ yếu của bài bác viết

Rx
Java Basic: Observable, Observer
Thực hành sử dụng Rx
Java vào Android.

Rx
Java là gì?

Rx
Java là một thư viện dùng để làm viết những ứng dụng Java theo triết lý hướng sự khiếu nại hay bất đồng bộ. Hay có thể nói rằng Rx
Java đã giúp cho mình viết mã Java hệt như Javascript. Về cơ phiên bản là nó đã follow theo Observer Pattern.

 

*
Code của các bạn sẽ chia là 2 phần: một mặt là tạo các sự kiện như click vào trong 1 button, tạo thành một request REST API… Phần còn lại sẽ lắng tai và phản hồi một biện pháp bất đồng điệu với sự kiện rõ ràng đó (cập nhật View, xử lý kết quả trả về.v.v…)

 

Rx
Java có phiên phiên bản đặc biệt cho android gọi là Rx
Android. Về cơ bạn dạng triết lý là kiểu như nhau, chỉ không giống Rx
Android có mở rộng và hỗ trợ thêm những API của game android mà thôi.

Để các bạn dễ gọi hơn, mình đang quay lại lịch sử vẻ vang viết mã nguồn áp dụng Android.

Cách tiếp cận trước lúc có Rx
Java

Nếu chúng ta đang làm việc trong những dự án apk thì hẳn thân thuộc gì cho tới Async
Task. Trách nhiệm của nó là triển khai các tác vụ nặng bên dưới background, sau khi dứt thì cập nhập lên UI Thread.

Nhưng tại chỗ này có một vài vấn đề:

Nếu buộc phải xử lý đa luồng, quản lý nhiều Async
Task thì thiệt là cơn ác mộng.Không có cơ chế giải pháp xử lý lỗi.Dễ bị memory Leak nếu bạn tạo inner class và truyền Context không nên cách.

Và còn nhiều sự việc tiềm tàng không giống nữa, bạn cũng có thể đọc nội dung bài viết này: Đừng dùng Async
Task mang đến tác vụ Network

Giờ đây, bạn có thể nghĩ cho tới Rx
Java, nó sẽ xử lý các vấn đề trên cho bạn.

Dưới đấy là một cách sử dụng Rx
Java cho một tác vụ chạy bên dưới background:

Observable //The work you need to lớn do//thread you need the work khổng lồ perform on.subscribe
On(Schedulers.io) //thread you need khổng lồ handle the result on.observe
On(Android
Schedulers.main
Thread()) .subscribe
With(Observer //handle the result here)Nhìn thật là gọn gàng và sạch sẽ và đẹp mắt phải không?

 

*

 

Như mình đã nói sinh sống trên, Rx
Java tuân theo triết lý hướng sự kiện, nên tất nhiên là được thiết kế với mã mối cung cấp theo pattern là Observer Pattern.

Để hiểu bản chất Rx
Java, bạn phải hiểu về Observer Pattern.

Chúng ta đã đào sâu hơn một chút về những API của Rx
Java nhé.

Rx
Java Basic: Observable, Observer

Rx
Java tất cả hai component chính là: Observable với Observer. Và để links hai component này thì có một trong những công nuốm như: Schedulers, Operators cùng Subscription.

 

*

 

Observable

Là phần sẽ tạo ra các sự kiện. Các bạn sẽ lắng nghe các sự khiếu nại này để có hành đụng thích hợp. Giờ đây sẽ không hề khái niệm chờ lâu một tác vụ thực hiện hoàn thành rồi theo lần lượt tới những tác vụ khác.

Observer

Là phần đông đoạn code sẽ lắng nghe Observable. Nó nhận tài liệu từ Observable phát ra. Các bạn sẽ cần cần override lại phần nhiều methods để Observer làm việc.

Ví dụ các methods phổ biến:

on
Subscribe():
Method được gọi khi một Observer đăng ký lắng nghe một Observable.on
Next():
Method này được điện thoại tư vấn khi Observable ban đầu bắn dữ liệu.on
Error():
giả dụ có bất kỳ lỗi lầm gì thì hàm on
Error() sẽ được gọi tên.on
Complete():
Được gọi lúc 1 Observable kết thúc tất cả các tác vụ.

Thực hành sử dụng Rx
Java vào Android.

Lý thuyết thì cũng dễ dàng như vậy thôi, giờ bản thân sẽ cùng nhau thực hành ứng dụng Rx
Java vào dự án Android.

Đầu tiên, bạn phải thêm dependencies vào build.gradle

implementation "io.reactivex.rxjava2:rxjava:2.1.6"implementation "io.reactivex.rxjava2:rxandroid:2.0.1"Version 2.1.6 là version mới nhất tại thời gian mình viết bài.

Dưới đấy là ví dụ về in một list và update vào một Adapter của một Recycler
View.

Array
List animals = new Array
List();animals.add("Tiger");animals.add("Lion");animals.add("Elephant");Observable.just(animals) .subscribe
On(Schedulers.io()) .observe
On(Android
Schedulers.main
Thread()) .subscribe
With(new Observer()
Override public void on
Next(Array
List array
List) //handling the result adapter.update
List(animals); adapter.notify
Data
Set
Changed();
Override public void on
Complete() //cleaning up tasks );Qua đoạn code trên, bạn có thể thấy phương pháp Rx
Java làm tốt hơn so với Async
Task vô cùng nhiều.

Viết code gọn ghẽ hơn.Không bắt buộc đến Context, điều mà chúng ta luôn muốn loại bỏ để code dễ unit hơn.Có hẳn thủ tục để cách xử trí lỗi (on
Error)

Tổng kết

Mình mong muốn qua bài viết, các bạn sẽ biết thêm 1 công cụ rất là hữu ích, giúp cho bạn phát triển áp dụng Android giỏi hơn.

Xem thêm: Trường đại học tôn đức thắng, công ty cổ phần đầu tư và phát triển tdt

Sau này khi bạn đọc nhiều về những mô dường như MVVM, MVP thì Rx
Java gần như là tủ sách được đóng đinh để cung cấp bạn triển khai mô hình hiệu quả.

 

1. Mở đầu.

Rx
Java xuất hiện khá thọ và đa số mọi bạn đều nghe về kỹ năng rất hoàn hảo và tuyệt vời nhất của nó. Họ vẫn nghe về nó như vậy nhưng lại chưa dùng nó. Các bạn có phải là một trong số kia không

*
. Nhiều người đã đọc những tài liệu dẫu vậy thấy nó rất nặng nề khăn, một trong những người lại sợ bắt đầu một cái gì đó mới thì lại thêm cảm hứng khó thêm ^^. Vị vậy trong bài viết này tôi sẽ trình bày các vụ việc cơ phiên bản trong Rx
Java cùng Rx
Android một cách dễ nắm bắt nhất.

 

Ok hoy, đầu tiên, sẽ bắt đầu với lý giải các lý thuyết cơ phiên bản trong reactive programming:

2. Reactive Programming là gì?

Reactive Programming về cơ bạn dạng là dựa trên sự kiện lập trình ko đồng bộ. Phần đông thứ bạn thấy là một trong những luồng dữ liệu không đồng điệu (asynchronous data stream), mẫu mà hoàn toàn có thể quan gần kề được với một hành vi sẽ được triển khai khi nó phát ra các giá trị. Chúng ta có thể tạo ra luồng dữ liệu này từ ngẫu nhiên thứ gì : thay đổi biến, sự khiếu nại click, http call, data storage, errors và hoàn toàn có thể là không vật dụng gì. Khi nói tới đến bất đồng bộ có nghĩa là mọi module code thì từng module chạy xe trên từng thread riêng biệt của nó, và cho nên cùng một lúc có tương đối nhiều khối mã được thực thi.Một điểm mạnh của bất đồng hóa là lúc mọi trách nhiệm chạy trên thread riêng biệt của nó, toàn bộ các trách nhiệm có thể bước đầu đồng thời và lượng thời gian để ngừng nhiệm vụ là cấp tốc hơn lúc ta tiến hành tuần tự. Khi nói tới các vận dụng cho mobile, khi các tác vụ điều khiển xe trên background thread, bạn cũng có thể đạt được trải nghiệm người dùng liền mạch mà lại không block main thread.

Lấy một ví dụ đơn giản là x = y + z, trong số đó tổng của y và z được gán mang đến x. Vào reactive programming, khi quý hiếm y chuyển đổi thì x cũng auto thay đổi theo mà không cần thiết phải thực hiện tại lại câu lệnh x = y + z. Điều này có thể nhận được lúc ta lắng nghe, quan giáp giá trị của y với z.Một mảng rất có thể là một luồng tài liệu và từng hành động rất có thể được triển khai khi mỗi phần tử của mảng này được phát ra. Gồm thể bạn muốn lọc lấy các số chẵn và vứt qua các số lẻ chẳng hạn. Điều này hoàn toàn có thể thực hiện khi bạn thực hiện vòng lặp thường thì và các câu lệnh có điều kiện. Tuy nhiên trong reactive programming chúng ta có thể đạt được vấn đề này theo một cách tiếp cận khác.Khi bạn bước đầu một ứng dụng bằng cách áp dụng reactive programming, giải pháp mà các bạn chọn architecture với viết code hoàn toàn khác so với trước đây. Ứng dụng vẫn vô cùng bạo dạn mẽ khi chúng ta dùng Clean Architecture, MVP, MVVM, …

3. Reactive Extension.

Reactive Extension (Reactive
X tuyệt RX) là 1 thư viện follow theo số đông quy tắc của Reactive Programming tức là nó biên soạn ra những chương trình bất đồng hóa và dựa trên sự kiện bằng cách sử dụng những chuỗi quan tiếp giáp được. Các thư viện này hỗ trợ một list các interface với method giúp những developers viết code một cách đơn giản và dễ dàng và sáng sủa hơn.

Rx là sự phối kết hợp của đều ý tưởng tốt nhất có thể từ Observer pattern, Iterator pattern cùng functional programming.

*
Reactive Extension có sẵn bởi nhiều ngôn từ như C++ (Rx
Cpp), C# (Rx.NET), Java (Rx
Java), Kotlin (Rx
Kotlin) Swift (Rx
Swift), ...
*
Chúng ta đề nghị đặc biệt suy xét Rx
Java với Rx
Android đúng không nào nào.

 

4. Rx
Java là gì?

Rx
Java là trong những Reactive Extension, dành riêng cho ngôn ngữ Java. Về cơ phiên bản nó là một trong thư viện follow theo Observer Pattern. Bạn có thể tạo ra bất kỳ luồng dữ liệu không nhất quán trên ngẫu nhiên thread nào, biến hóa dữ liệu và dữ liệu này được áp dụng bởi Observer trên bất kỳ thread nào. Tủ sách này cung cấp nhiều toán tử tuyệt vời như Map, Combine, Merge, Filter, .... Có thể áp dụng cho một luồng dữ liệu.

5. Rx
Android là gì?

Rx
Android là 1 loại Rx giành cho nền tảng Android. Nó được sinh ra từ Rx
Java với vài ba lớp nhận thêm vào. Cụ thể hơn, Schedulers được ra mắt trong Rx
Android (Android
Schedulers.main
Thread()) nhập vai trò đặc biệt trong việc cung cấp đa luồng trong số ứng dụng Android. Schedulers về cơ bản quyết định.Có tương đối nhiều loại Schedulers có sẵn tuy thế Schedulers.io() và Android
Schedulers.main
Thread() là được dùng nhiều nhất:

Schedulers.io()

Khi dùng cái này thì sẽ không dùng mang đến CPU, nó tiến hành các công việc chuyên sâu như networks call, đọc đĩa/file, database, … Nó duy trì được pool của thread.

Android
Schedulers.main
Thread()

Nó cung cấp quyền truy cập đến Main Thread/UI Thread. Thông thường update giao diện hay thúc đẩy với người dùng sẽ xảy ra trên luồng này. Bọn họ không tiến hành bất kì các bước chuyên sâu bên trên luồng này vày nó sẽ tạo nên ứng dụng bị crash hoặc ANR.

Schedulers.new
Thread()

Sử dụng điều này thì từng thread đang được tạo ra mỗi lần trọng trách được xếp lịch. Thường xuyên thì không lời khuyên sử dụng phương pháp này trừ khi quá trình rất dài. Thread được chế tác qua new
Thread() sẽ không được dùng lại.

Schedulers.computation()

Có thể yên cầu đến yên cầu nhiều CPU như xử lý tài liệu lớn, cách xử lý bitmap, … con số các thread được sản xuất ra bằng cách sử dụng Scheduler này trả toàn phụ thuộc vào vào số lõi CPU.

Schedulers.single()

Scheduler này đang thực hiện toàn bộ các trọng trách theo đồ vật tự tuần tự mà lại chúc được add vào. Việc này có thể quan trọng trong một số trong những trường hợp bắt buộc tuần tự.

Schedulers.immediate()

Thực hiện nhiệm vụ ngay chớp nhoáng một bí quyết đồng bộ bằng phương pháp chặn main thread.

Schedulers.trampoline()

Nó thực hiện các trọng trách theo Last In - First Out. Tất cả các nhiệm vụ được xếp lịch vẫn được thực hiện từng loại một bằng phương pháp giới hạn con số các background thread thành một.

Schedulers.from()

Cách này cho phép tạo ra một Scheduler xuất phát điểm từ một Executor vì chưng giới hạn số lượng các thread được sinh sản ra. Khi thread pool bị full, những nhiệm vụ sẽ xếp mặt hàng đợi.

Chúng ta đã gồm có khái niệm cơ bản cần thiết. Giờ đồng hồ hãy bắt đầu với một số khái niệm bao gồm về Rx
Java mà lại mọi tín đồ nên biết.

6. Rx
Java Basic: Observable, Observer

Rx
Java gồm hai components đó là Observable cùng Observer. Cung ứng đó bao hàm thứ khác ta phải thân mật thêm như Schedulers, Operators và Subscription.

Observable.

Là một luồng dữ liệu (data stream) làm các bước nào đó và phát ra tài liệu (data)

*

 

Observer.

Là những đối tượng người dùng lắng nghe Observable. Nó nhận tài liệu từ Observable phân phát ra.

Subscription.

Sự link giữa Observable với Observer được điện thoại tư vấn là Subscription. Gồm thể có không ít Observers đăng ký (subscribed) tới duy nhất Observable.

Operator / Transformation

Operator còn hoàn toàn có thể gọi là Transformation bởi vì nó là những toán tử có nhiệm vụ thay đổi dữ liệu được vạc ra vày Observable trước lúc một Observer nhận bọn chúng (nhận dữ liệu)

Schedulers.

Như đã nói ở trên thì Schedulers là 1 trong tên mà có thể quyết định thread nhưng trên kia Observable sẽ phát ra tài liệu và bên trên Observer sẽ nhận ra trên background xuất xắc main thread, …

7. Tổng kết.

Qua bài viết mình đang tổng hợp một số khái niệm cơ bản liên quan cho Rx
Java cùng Rx
Android

Leave a Reply

Your email address will not be published. Required fields are marked *

x

Welcome Back!

Login to your account below

Retrieve your password

Please enter your username or email address to reset your password.