Javaを理解する。 RxJava for beginners

この記事では、RxJavaの基本を例題を通して説明します。 この記事は RxJava 初心者のためのものです。

RxJavaは、ReactiveXのJava VM実装であり、observableシーケンスを使用して非同期およびイベントベースのプログラムを構成するためのライブラリです。 オブザーバブルはアイテムを発行するために使用され、サブスクライバはそれらのアイテムを消費するために使用されます。 これは標準のObservableパターンに似ている」と思う人もいるでしょう。 しかし、RxJavaはより良い方法で、より多くのオプションを持っています。 例えば、Observableは誰かが購読するまでアイテムを発行し始めないことがよくあります。 この方法では、パフォーマンスを節約できるため、これは素晴らしい機能です。

RxJava はこのように動作します。 Subscriber は Observable を購読し、Observable は任意の数のアイテムについて Subscriber.onNext() を呼び出し、何か問題が発生すると Subsciber.onError() で、すべてが正常に終了すると Subscriber.onCompleted() で処理されます。 これは簡単なことです!

Shut up! この例では、基本的な Observable と Subscriber を作成し、それらをリンクして、何が起こるかを確認します。 ネタバレ注意!

基本的な Observable を作成します。

作成した Observable は “Blue Factory” ストリングを発行し、完了します。 「Blue Factory” String は Subscribers の onNext() メソッドで受信されます。

Subscriber は onNext() で String 値を受信してそれを表示し、また onCompleted() が呼ばれると String 「終わったよ」 が表示されるようになりました。

次にそれらをリンクします。

Result:

I/System.out: Blue Factory

I/System.out: I’m done

購読が発生すると、myObservable は mySubscription の onNext() と onComplited() メソッドを呼び出します。 結果は “Blue factory” と “I’m done” が出力され、その後すべてが停止して終了します。

もっとシンプルにできないでしょうか。 myObservable を作成すると、コードが多くなりすぎて、ごちゃごちゃしていることに気づくかもしれません。

これらのショートカットは Observable.just() や Observable.from() のようなメソッドです。

Observable.just() は単一のアイテムのみを表示し、Observable.from() はアイテム一覧から1つずつアイテムを表示します。 6803>

Shut up!

例 2

この例では、例 1 と同じものをより少ないコードで作成します。 Observable が少し痩せたようです!
Subscriber を作成しましょう:

Subscriber は同じです!
Subscriber を作成しましょう。
では、それらをリンクして、魔法が起こるのを待ちましょう!

Result:

I/System.out: 青い工場
I/System.out: I’m done

おわかりのように、私たちはタスクを完了し、より少ないコードでまったく同じことを行うことができます。 この例では、Observable.from() を使って少し異なることをします。 このアイデアは、文字列 “Blue”, “Factory”, “Blog”, “Post” を表示することです。
Observable.from()とは何かを思い出しましょう。 Observable.from()はアイテムリストを受け取り、アイテムを1つずつ表示します。
最初に文字列でArrayListを作成します。

見ての通り、Observable.from()には文字列を読み込んだArrayListを引数として受け取ります。

Result:

I/System.out.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.YXX.XXX Blue
I/System.out: Factory
I/System.out: ブログ
I/System.out.Blog
I/System.out: Post

ご覧のとおり、私たちは再びタスクを成功させました!
これまで学んできたことはすべて純粋な基本トリックですが、これからは「難しい」トリックを行います!

Rx の演算子とは?

演算子は、変換と API 呼び出し問題を処理するために作成したメソッドです。 ここでは、Map を使用した変換の簡単な例と、Retrofit、RxJava on MVP アーキテクチャ パターンを使用した API 呼び出しの処理の例を紹介します。

最初の方法:

Observable でこれを行うことができますが、Observable はアイテムを生成するもので、それらを変更するためのものではありません。
2 番目の方法:

同じ話で、Subscriber はアイテムを変更できないはずでした。 Operator は、Observable と Subscriber の間の 1 つの追加ステップで、オブジェクトを変換することができます。 6803>

例 4

まず、Observable を作成します。

myObservable が 1 つの変更されていないアイテムを出力することに注意してください。 Map 演算子は、オブジェクトを好きなように変換し、それを Subscriber に返します。

オペレータ呼び出し (String s) で、String “Blue Factory” の変換が行われました。
Subscriber:

Result:

I/System.out: Blue Factory Blog Post

この例は、演算子でできることのごく一部を示しています。 たとえば、Map 演算子は、次の例のように複数回積み重ねることができます:
Shut up! 6803>

例 5

オペレータは、以下の例のように、放出されるアイテムの種類も変更できます:
Shut up! 6803>

例 6

この例では、Observable は文字列 “5” を出力し、演算子はそれを整数値 “5” に変換します。

myObservable 型が Observable であることと Observable が String を発することに注意してください。
Map演算子を作成しましょう!

Map演算子のcall(String s)メソッドはStringを受け取り、Integerを返していることに注目してください。
Subscriber を作成し、それらをリンクしましょう。

Subscriber は Observable 型と同じで、演算子は (Integer) を返す型をしています。 演算子を使えば、やりたいことは何でもできるのです! そして、RxJavaには豊富な種類の演算子があることが最大の特徴です。 ここで、すべての演算子を確認することができます。 https://github.com/ReactiveX/RxJava/wiki/Alphabetical-List-of-Observable-Operators.

結論として、演算子はオブジェクトの変換とデータの研磨に強力であり、このすべての後に、あなたのコードはきれいで清潔に見えます!

RXJava で何ができますか?

あなたの Observable はすべてになることができるので、あなたは望むすべてを行うことができます。 文字列、整数、API 呼び出し、クリック、などです。 Android 開発者のように進歩すると、RxJava を API 呼び出しと Android ウィジェットのために主に使用するようになります。 RxJavaは、スレッドの心配をする必要がなく、いくつかのリクエストを連鎖させて、一つのSubscriberで結果を得ることができるので、API操作が簡単です。 RxJavaを使えば、例えば、5回押された後にウィジェットが何をするか、EditText入力から4秒ごとに文字列を出力するObservableを作成するなど、ウィジェットの動作を処理することができますし、他にも多くの面白いことができます。 この記事でRxJavaの基本を理解していただき、今後もRxJavaを探求していただければと思います

コメントを残す

メールアドレスが公開されることはありません。