[解決済み] Rxandroid SubscribeOnとObserveOnの違いは何ですか?
質問
Rx-javaとRxandroid2を勉強しているのですが、SubscribeOnとObserveOnの大きな違いは何でしょうか?
どのように解決するのですか?
万が一 を見つけた場合 は専門用語だらけです。
tl;dr
Observable.just("Some string")
.map(str -> str.length())
.observeOn(Schedulers.computation())
.map(length -> 2 * length)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(---)
observableを観測する...map関数をobsoleteで実行する。 IO スレッドでマップ関数を実行します(私たちは
"subscribingOn"
スレッドであるため)...今度は 計算スレッド を実行しmap(length -> 2 * length)
関数を実行します... そして最後に、出力を (observeOn()
) メイン のスレッドになります。
とにかく ,
observeOn()
は、単にすべての演算子のスレッドをさらに変更します。
下流
. 人々は通常、この
誤解
それは
observeOn
としても機能します。
上流
として動作しますが、そうではありません。
以下の例では、よりよく説明されます...
Observable.just("Some string") // UI
.map(str -> str.length()) // UI
.observeOn(Schedulers.computation()) // Changing the thread
.map(length -> 2 * length) // Computation
.subscribe(---)
subscribeOn()
のみ
影響力
Observableが購読されるときに使われるスレッドで、その下流に留まります。
Observable.just("Some String") // Computation
.map(str -> str.length()) // Computation
.map(length -> 2 * length) // Computation
.subscribeOn(Schedulers.computation()) // -- changing the thread
.subscribe(number -> Log.d("", "Number " + number));// Computation
位置は関係ない(
subscribeOn()
)
なぜか? それは に影響するからです。 にしか影響しないからです。
とのコンタクトに従うメソッド
subscribeOn
-> 基本的な例:
Observable.create
の中で指定されたすべての作業は
create
で指定されたスレッドで実行されます。
subscribeOn
.
もう一つの例です。
Observable.just
,
Observable.from
または
Observable.range
注意 これらのメソッドはすべて値を受け取るので、subscribeOnはそれに影響しないので、それらの値を作成するためにブロッキングメソッドを使用しないでください。
もし、ブロッキング関数を使いたい場合は
Observable.defer(() -> Obervable.just(blockingMenthod())));
重要な事実
subscribeOnは
Subjects
複数
subscribeOn
:
のインスタンスが複数ある場合
subscribeOn
が存在する場合、ストリーム中の
最初の
のみが実用的な効果を持ちます。
サブスクライブ・アンド・アンプ
subscribeOn
人々はこう考える
subscribeOn
とは何か関係があるのでしょうか?
Observable.subscribe
とは関係がありますが、特に関係ありません。
サブスクリプションフェーズにのみ影響する
.
ソース : Tomek Polański ( ミディアム )
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
Java の switch case 文で必要な定数式の問題の解決法
-
Jsoup-Crawlingの動作
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
java.sql.SQLException: 結果セットの開始前
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
Zipファイルの圧縮・解凍にantを使用する