.Rxjavaは何ですか
「JavaのVMのための観察可能なシーケンスを使用して非同期とイベントベースのプログラムを構成するためのライブラリ」(使用シーケンスは、非同期ライブラリプログラムイベントベースを構成するには、Java VM上で観察することができるように、GitHubのホームページ上Rxjavaは自分自身を紹介します)。
口語、Rxjava非同期に処理するように設計さオブザーバーパターンを使用してフレーム。コードが読みやすく、エレガントにするために設計チェーンのコール。
例えば:
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("a");
}
});
observable.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
これはRxjava2最も簡単な使い方です。
1.ここでは主に観測されたイベントに対処する、方法をサブスクライブ書き換える、観測を作成します。
2.この観察可能な、イベントオブザーバのコールバックメソッドを購読、我々はイベントに応答して取引を行うことができます
ソースは2 .Rxjavaを解決します
2.1観察可能な作成:
観察Observable.create(ObservableOnSubscribe <T>ソース)メソッドを使用して作成しました。このメソッドのパラメータはObservableOnSubscribeです。
public interface ObservableOnSubscribe<T> {
/**
* Called for each Observer that subscribes.
* @param e the safe emitter instance, never null
* @throws Exception on error
*/
void subscribe(@NonNull ObservableEmitter<T> e) throws Exception;
}
ObservableOnSubscribeはインターフェースである、唯一の方法を購読し、パラメータがObservableEmitter <T> Eです。エミッタObservableEmitterはインターフェース、エミッタonNextで定義されたインタフェースのonErrorなどonCompleteの、及び対応する方法のオブザーバ(オブザーバ)を継承しています。
public interface Emitter<T> {
/**
* Signal a normal value.
* @param value the value to signal, not null
*/
void onNext(@NonNull T value);
/**
* Signal a Throwable exception.
* @param error the Throwable to signal, not null
*/
void onError(@NonNull Throwable error);
/**
* Signal a completion.
*/
void onComplete();
}
ObservableEmitterインタフェースエミッタはsetDisposable、setCancellable方法を含むように拡張されます
理解の基本パラメータ、今作成方法内で行われているものを見て、コードは次のとおりです。
public static <T> Observable<T> create(ObservableOnSubscribe<T> source) {
return RxJavaPlugins.onAssembly(new ObservableCreate<T>(source));
}
调用了RxJavaPlugins的onAssembly方法。又有一个新参数ObservableCreate<T>(source),我们看看它是什么:
final class ObservableCreate<T> extends Observable<T> {
public ObservableCreate(ObservableOnSubscribe<T> source) {
this.source = source;
}
}
観察可能な継承され、それはまた、我々は我々の新しいObservableOnSubscribeオブジェクトを参照してくださいコンストラクタでオブジェクトを観察し、ソースが内部ObservableCreateありです
私たちが何onAssemblyを行う方法を見て続けること:
public static <T> Observable<T> onAssembly(@NonNull Observable<T> source) {
Function<? super Observable, ? extends Observable> f = onObservableAssembly;
if (f != null) {
return apply(f, source);
}
return source;
}
メソッドをフック。onObservableAssembly静的変数は、それがソースオブジェクトを直接返され、デフォルトは空である、我々は設定されていなかった、です。言い換えれば、実際に方法が観察される作成内側のオブジェクトObservableCreateソースに格納されているオブジェクトをおObservableOnSubscribe入れ、その後、ObservableCreateオブジェクトを返します。
私たちは、私たちが観察完成を作成し、それがObservableCreateオブジェクトを作成し、ObservableCreateが観察継承知っています。
2.2イベント(観察者)にサブスクライブ
ビューアの操作を購読するobservable.subscribe(新しいオブザーバー<文字列>())です。この演算子は、イベントは、観察者によって観察される、つまり、実際には「受動的」です。パラメータはオブザーバーオブザーバである方法を購読ので。我々はまた調子になり、それぞれの方法ではオブザーバーで戻り値に関連するイベントを受け取ります。
私たちは、ソースを見て法を購読します:
public final void subscribe(Observer<? super T> observer) {
try {
subscribeActual(observer);
} catch (NullPointerException e) { // NOPMD
throw e;
} catch (Throwable e) {
RxJavaPlugins.onError(e);
}
}
我々は、最も重要なメソッド呼び出しがある知っているコードを見てください:subscribeActual(オブザーバー);、この方法で観察抽象メソッドですが、私たちが観察され、この時間はObservableCreateオブジェクトを(フロントオブジェクトメソッドの戻りを作成します)。だから我々は、このメソッドをオーバーライドする方法をObservableCreateの内側を見てみましょう。コードは以下の通りであります:
protected void subscribeActual(Observer<? super T> observer) {
CreateEmitter<T> parent = new CreateEmitter<T>(observer);
observer.onSubscribe(parent);
try {
source.subscribe(parent);
} catch (Throwable ex) {
Exceptions.throwIfFatal(ex);
parent.onError(ex);
}
私たちは、この方法は、3つのことを行うために主に見ました:
①CreateEmitterのターゲットの親を作成します。
②親パスは、元のメソッドをサブスクライブします。私たちは、上記のソースは、私たちのメソッドがオーバーライドさ購読保存されたばかりObservableOnSubscribeオブジェクトである知っています:
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("a");
}
だから我々はCreateEmitterにより、この方法ではCreateEmmiterを受け取ることができるようになり、適切なメソッドをコールバックすることができます。次のようにonNextソースコード:CreateEmitterは、私たちのような、その内部実装を見て、ObservableEmitterインタフェースを達成することです。
@Override
public void onNext(T t) {
observer.onNext(t);
}
言い換えれば、我々はそれがonNextオブザーバを呼び出すObservableOnSubscribeの方法を、サブスクライブ中ObservableEmitterの方法onNext呼び出すとき。だから、そのような転送によって、私たちはイベントに関連する状態の受信に応答してオブザーバのコールバックメソッドのことができるようになります。
このように、単純なRxjavaストリーミング転送原理が終了した、次のようにプロセスがある要約:
Observbable.create方法はObservableCreateオブジェクト、オブジェクトのソースとオブジェクトObservableOnSubscribe堆積物を生成するために使用されます。
ObservableCreate.subscribeメソッドを呼び出し、実際の呼び出しは、Observerオブジェクトを渡し、subscribeActual方法です。
、CreateEmmiterオブジェクトを作成しsource.subscribeメソッドを呼び出し、CreateEmmiterオブジェクトを渡すためにsubscribeActual方法。
だから我々はCreateEmmiterにObservableOnSubscribeを受け、CreateEmmiterはObservableEmmiterのサブクラスです。私たちは、イベントコールバックはこちらの方法のCreateEmmiterを呼び出すことができます。
コールCreateEmmiter方法は、実際に応答オブザーバーのメソッドを呼び出します。これは、オブザーバーの地位にイベントを渡すCreateEmmiterです。
道路のAndroidの建築家は長いですので、我々は計画それのこの学習コンテンツや実装からスタート!好きな別れは、ああ注目と賞賛をクリックすることを忘れ