Rxjava Là Gì – Rx Trong Android

Bài viết Rxjava Là Gì – Rx Trong Android thuộc chủ đề về Giải Đáp Thắc Mắt thời gian này đang được rất nhiều bạn quan tâm đúng không nào !! Hôm nay, Hãy cùng NaciHolidays.vn tìm hiểu Rxjava Là Gì – Rx Trong Android trong bài viết hôm nay nha !

Các bạn đang xem chủ đề về : “Rxjava Là Gì – Rx Trong Android”

RxJava, RxAndroid căn bản.

Bài Viết: Rxjava là gì

I. Reactive Programming là gì?

Reactive Programing mà một phương thức lập trình tập trung vào những luồng dữ liệu không giống hệt and quan sát sự cân chỉnh của những luồng dữ liệu không giống hệt đó, khi có sự cân chỉnh sẽ có hành động xử lý phù hợp. Vì đó chính là luồng dữ liệu không giống hệt nên những module code cùng lúc chạy trên những thread khác nhau từ đó rút ngắn thời điểm thực thi mà không làm block main thread.

II. RxJava

RxJava căn bản là một thư viện tán thành những event không giống hệt đc phát triển theo Observer Pattern. Bạn cũng khả năng tạo luồng dữ liệu không giống hệt trên bất cứ thread nào, cân chỉnh dữ liệu and dùng dữ liệu bằng Observer. Thư viện RxJava tán thành rất nhiều loại Operator tuyệt vời như bản đồ, combine, merge , filter and nhiều thứ khác khả năng đc dùng cho luồng dữ liệu.

III. RxAndroid

RxAndroid đc tính chất dùng cho nguồn gốc Android đc phát triển dựa trên RxJava. Đặc điểm Schedulers đc bổ sung cập nhật cho RxAndroid nhằm giúp sức cho đa luồng trong phần mềm Android. Schedulers sẽ cứu bạn phân chia luồng chạy cho từng module code sao cho phù hợp. Một vài luồng chạy phổ cập đc dùng qua Schedulers.

AndroidSchedulers.mainThread () Tán thành quyền truy cập vào Android Main Thread / UI Thread.Schedulers.newThread () Thread mới để được tạo được mỗi khi một nhiệm vụ đc tạo.

IV. Các thành phần quan trọng trong RxJava:

Về căn bản RxJava có hai thành phần chính: Observable and Observer. Thêm vào đó, có các thứ khác như Schedulers, Operators and Subscription là những thành phần đóng vai trò như đa luồng, thao tác dữ liệu, and kết nối. Các bạn sẽ cùng làm quen với từng thành phần: Observable: Là luồng dữ liệu triển khai một vài việc làm and phát ra dữ liệu.Observer : Là thành phần đi cùng không hề nợ của Observable. Nó nhận dữ liệu đc phát ra bởi Observable. Subcription: Là mối links giữa Observable and Observer. khả năng có nhiều Observer đăng ký một Observable duy nhất. Operator: Bổ trợ cho việc sửa đổi dữ liệu đc phát ra bởi Observable trước khi observer nhận chúng. Schedulers: Scheduler quyết định thread mà Observable sẽ phát ra dữ liệu and trên thread nào Observer sẽ nhận dữ liệu.

Mọi Người Cũng Xem   Hcn Là Gì - Chất Độc Xyanua Nguy Hiểm Mức Nào

1. Phương thức tạo Observable

Các bạn có 5 loại Observable đi cùng là 5 loại Observer tương ứng. Mỗi loại Observable đc dùng trong những điều kiện khác nhau dựa vào số lượng and loại phần tử đc Observable phát ra.

*

Trước tiên các bạn sẽ điểm qua một vài phương thức phổ cập để tạo được Observable:just:Available: Flowable, Observable, Maybe, Single Tạo một Observable phát ra một item rõ nét.defer:Available: Flowable, Observable, Maybe, Single, Completable không tạo được Observable cho đến khi có Observer đăng ký, and tạo một Observable mới mỗi khi có Observer mới đăng ký.from:Available: Flowable, Observable Convert những đối tượng người dùng and kiểu dữ liệu khác thành Observablesinterval:Available: Flowable, Observable. Định kỳ tạo được một vài vô hạn (Long), ngày càng tăng.

Xem Ngay: Bảo Vệ Môi Trường Là Gì, Bảo Vệ Môi Trường

fromCallable:Available: Flowable, Observable, Maybe, Single, Completable Khi có observer đăng ký, Callable đã cho đc gọi and kinh phí trả về của nó (hoặc ném ngoại lệ) đc chuyển tiếp đến Observer.

2. Phương thức tạo Observer

So với mỗi loại Observer khác nhau các bạn có phương pháp tạo and thực thi khác nhau nhưng đều khá dễ chơi. Này là ví dụ điển hình nhất để tạo được Observer:

private Observer getAnimalsObserver() return new Observer()
Override public void onComplete() Log.d(TAG, “All items are emitted!”); ; onSubscribe(): Phương pháp để được gọi khi một Observer đăng ký vào Observable. onNext(): Phương pháp này để được gọi khi Observable mở đầu phát ra dữ liệu. onError(): Trong điều kiện có lỗi, cách onError() để được gọi.onComplete(): Khi một Observable hoàn thành việc phát ra dữ liệu, onComplete() để được gọi.

3. Tạo Observer theo dõi Observable

Này là những cách căn bản để gây ra nên Observer đăng ký theo dõi Observable.

animalsObservable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(animalsObserver);subscribeOn(Schedulers.io ()): Báo cho Observable chạy nhiệm vụ trên một chuỗi nền.observOn(AndroidSchedulers.mainThread ()): mong muốn Observer nhận dữ liệu trên luồng chính để bạn cũng khả năng triển khai những hành động gây tác động giao diện.

4. Disposable

Disposable đc dùng để hủy sự kết nối của Subserver với Subsevable khi đã không còn thiết yếu việc này rất có ích để né việc rò rỉ bộ nhớ. Khi Observer kết nối đc với Observable trong onSubcribe() ta sẽ nhận đc Disposable. Để hủy sự kết nối trong onDestroy() của Activity bạn nên gọi hàm dispose() của Disposable.

5. Operator

RxJava tán thành tập hợp to những operator giúp sức cho việc thao tác với dữ liệu vậy cho nên operators đc phân chia dựa trên loại việc làm chúng làm. Ví dụ như nhóm tạo Observable: create, just, fromArray,… Nhóm lọc dữ liệu: filter, skip, last, take, … Nhóm tạo Observable từ dữ iệu của Observable khác như: buffer, bản đồ, flatmap,…Chăm chú khi dùng nhiều Operator thì kết quả của Operator trước sẽ truyền cho Operator sau.Bạn cũng khả năng xem thêm tại đây

V. Ví dụ:

Sau đó chính là ví dụ rõ nét cho từng loại Observable đc đề cập phía bên trên:Trong những ví dụ mình sử dung Custom object Note:

public class Note int id; String note; // getters an setters

Mọi Người Cũng Xem   Fixture Note Là Gì - Hợp Đồng Tự Do (Fixture Note)

1. Observable & Observer:

Đc dùng nhiều nhất trong số toàn bộ. Observable khả năng phát ra không hoặc nhiều phần tử.

public class ObserverActivity extends AppCompatActivity { private static final String TAG = ObserverActivity.class.getSimpleName(); private Disposable disposable; /** * Simple Observable emitting multiple Notes * – * Observable : Observer */
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_observer); Observable notesObservable = getNotesObservable(); Observer notesObserver = getNotesObserver(); notesObservable.observeOn(Schedulers.io()) .subscribeOn(AndroidSchedulers.mainThread()) .subscribeWith(notesObserver); private Observer getNotesObserver() return new Observer()
Override public void onComplete() Log.d(TAG, “onComplete”); ; private Observable getNotesObservable() { final List notes = prepareNotes(); return Observable.create(new ObservableOnSubscribe()
Override public void subscribe(ObservableEmitter emitter) throws Exception for (Note note : notes) if (!emitter.isDisposed()) emitter.onNext(note); // all notes are emitted if (!emitter.isDisposed()) emitter.onComplete(); ); } private List prepareNotes() List notes = new ArrayList(); notes.add(new Note(1, “Buy tooth paste!”)); notes.add(new Note(2, “Call brother!”)); notes.add(new Note(3, “Watch Narcos tonight!”)); notes.add(new Note(4, “Pay power bill!”)); return notes;
Override protected void onDestroy() super.onDestroy(); disposable.dispose(); }Output:

onSubscribeonNext: Buy tooth paste!onNext: Call brother!onNext: Watch Narcos tonight!onNext: Pay power bill!onComplete

2. Single & SingleObsever

Single luôn phát ra chỉ một kinh phí hoặc một lỗi. Observable khả năng triển khai đc việc làm này nhưng Single luôn luôn đảm bảo an toàn rằng luôn luôn có một phần tử đc trả về. Chính vì chỉ có một phần tử nên SingleObserver không có onNext() mà chỉ có onSuccess() để nhận dữ liệu trả về.

public class SingleObserverActivity extends AppCompatActivity private static final String TAG = SingleObserverActivity.class.getSimpleName(); private Disposable disposable; /** * Single Observable emitting single Note * Single Observable is more useful in making network calls * where you expect a single response object lớn be emitted * – * Single : SingleObserver */ // TODO – kết nối lớn Retrofit tutorial
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_single_observer); Single noteObservable = getNoteObservable(); SingleObserver singleObserver = getSingleObserver(); noteObservable .observeOn(Schedulers.io()) .subscribeOn(AndroidSchedulers.mainThread()) .subscribe(singleObserver); private SingleObserver getSingleObserver() return new SingleObserver()
Override public void onError(Throwable e) Log.d(TAG, “onError: ” + e.getMessage()); ; private Single getNoteObservable() return Single.create(new SingleOnSubscribe()
Override public void subscribe(SingleEmitter emitter) throws Exception Note note = new Note(1, “Buy milk!”); emitter.onSuccess(note); );
Override protected void onDestroy() super.onDestroy(); disposable.dispose(); Output

onSubscribeonSuccess: Buy milk!

3. Maybe & MaybeObserver

Maybe khả năng hoặc không phát ra một kinh phí. Maybe đc dùng khi bạn đang chờ đợi 1 phần tử đc phát ra tùy từng từng điều kiện xảy ra. Như khi các bạn query note by Id trong database nó khả năng có hoặc cũng khả năng không.

public class MaybeObserverActivity extends AppCompatActivity { private static final String TAG = MaybeObserverActivity.class.getSimpleName(); private Disposable disposable; /** * Consider an example getting a note from db using ID * There is possibility of not finding the note by ID in the db * In this situation, MayBe can be used * – * Maybe : MaybeObserver */
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_maybe_observer); Maybe noteObservable = getNoteObservable(); MaybeObserver noteObserver = getNoteObserver(); noteObservable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(noteObserver); private MaybeObserver getNoteObserver() return new MaybeObserver()
Override public void onComplete() Log.e(TAG, “onComplete”); ; /** * Emits optional data (0 or 1 emission) * But for now it emits 1 Note always */ private Maybe getNoteObservable() return Maybe.create(new MaybeOnSubscribe()
Override public void subscribe(MaybeEmitter emitter) throws Exception Note note = new Note(1, “Call brother!”); if (!emitter.isDisposed()) emitter.onSuccess(note); );
Override protected void onDestroy() super.onDestroy(); disposable.dispose(); }

4.Completable & CompletableObserver

Completable không phát ra bất cứ dữ liệu nào thay vào đó nó thông báo trạng thái của tác vụ thành công hay thất bại. Đc dùng khi bạn có mong muốn triển khai một vài nhiệm vụ and không chờ đợi bất cứ kinh phí nào trả về. Một điều kiện Completable thường đc dùng là update một vài dữ liệu trên máy chủ bằng phương pháp triển khai mong muốn PUT.

Mọi Người Cũng Xem   Ghệ Là Gì - Tại Sao Con Gái Lại Gọi Là Con Ghệ

Xem Ngay: vị trí đặt tiếng anh là gì

public class CompletableObserverActivity extends AppCompatActivity { private static final String TAG = CompletableObserverActivity.class.getSimpleName(); private Disposable disposable; /** * Completable won”t emit any item, instead it returns * Success or failure state * Consider an example of making a PUT request lớn server lớn cập nhật * something where you are not expecting any response but the * success status * – * Completable : CompletableObserver */ // TODO – kết nối lớn Retrofit tutorial
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_completable_observer); Note note = new Note(1, “trang chủ work!”); Completable completableObservable = updateNote(note); CompletableObserver completableObserver = completableObserver(); completableObservable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(completableObserver); /** * Assume this making PUT request lớn server lớn cập nhật the Note */ private Completable updateNote(Note note) return Completable.create(new CompletableOnSubscribe()
Override public void subscribe(CompletableEmitter emitter) throws Exception if (!emitter.isDisposed()) Thread.sleep(1000); emitter.onComplete(); ); private CompletableObserver completableObserver() { return new CompletableObserver()
Override protected void onDestroy() super.onDestroy(); disposable.dispose(); Output

onSubscribeonComplete: Note updated successfully!

5. Flowable & Observer

Đc dùng khi một Observable tạo được số lượng to những event / dữ liệu mà Observer khả năng xử lý. Flowable khả năng đc dùng khi nguồn tạo được 10k+ event and Onserver không hề tiêu hao toàn bộ.Flowable dùng phương thức Backpressure để xử lý dữ liệu né lỗi MissingBackpressureException and OutOfMemoryError.

public class FlowableObserverActivity extends AppCompatActivity private static final String TAG = FlowableObserverActivity.class.getSimpleName(); private Disposable disposable; /** * Simple example of Flowable just lớn show the syntax * the use of Flowable is best explained when used with BackPressure * Read the below kết nối lớn know the best use cases lớn use Flowable operator * https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0#when-lớn-use-flowable * – * Flowable : SingleObserver */
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_flowable_observer); Flowable flowableObservable = getFlowableObservable(); SingleObserver observer = getFlowableObserver(); flowableObservable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .reduce(0, new BiFunction()
Override public Integer apply(Integer result, Integer number) //Log.e(TAG, “Result: ” + result + “, new number: ” + number); return result + number; ) .subscribe(observer); private SingleObserver getFlowableObserver() return new SingleObserver()
Override public void onError(Throwable e) Log.e(TAG, “onError: ” + e.getMessage()); ; private Flowable getFlowableObservable() return Flowable.range(1, 100);
Override protected void onDestroy() super.onDestroy(); disposable.dispose(); Output

Thể Loại: Giải bày Kiến Thức Cộng Đồng

Các câu hỏi về Rxjava Là Gì – Rx Trong Android


Nếu có bắt kỳ câu hỏi thắc mắt nào vê Rxjava Là Gì – Rx Trong Android hãy cho chúng mình biết nha, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình nâng cao hơn hơn trong các bài sau nha <3 Bài viết Rxjava Là Gì - Rx Trong Android ! được mình và team xem xét cũng như tổng hợp từ nhiều nguồn. Nếu thấy bài viết Rxjava Là Gì - Rx Trong Android Cực hay ! Hay thì hãy ủng hộ team Like hoặc share. Nếu thấy bài viết Rxjava Là Gì - Rx Trong Android rât hay ! chưa hay, hoặc cần bổ sung. Bạn góp ý giúp mình nha!!

Các Hình Ảnh Về Rxjava Là Gì – Rx Trong Android

Rxjava Là Gì - Rx Trong Android

Các từ khóa tìm kiếm cho bài viết #Rxjava #Là #Gì #Trong #Android

Tham khảo dữ liệu, về Rxjava Là Gì – Rx Trong Android tại WikiPedia

Bạn khả năng tra cứu thêm thông tin về Rxjava Là Gì – Rx Trong Android từ web Wikipedia.◄

Tham Gia Cộng Đồng Tại

???? Nguồn Tin tại: https://NaciHolidays.vn/

???? Xem Thêm Chủ Đề Liên Quan tại : https://naciholidays.vn/hoi-dap/

Related Posts

About The Author

Add Comment