rxlavaのオペレータまたはコード例でobservableの結果を呼び出されたスレッドに返す方法はありますか? Androidの別の1つのキャッシュです) アプリケーションはいくつかのレイヤーに分かれています:サブスクライバのスレッドで別のObservable結果を返すRxJava演算子
UI |ドメイン(中)層(キャッシング、アプリロジック)|データレイヤー(ディスクとネットワーク)
問題は、観測可能なスレッドが異なるレイヤーからどのスレッドから呼び出されるかわからないということです。だから私はAndroidのメインスレッドや別の1つのSchedullers.computation()
またはSchedullers.io()
スレッドへの冗長切り替えを行う必要があります。
たとえば、UIレイヤーは、UIメインスレッド(または計算などの計算)からドメインレイヤーに観察可能にサブスクライブし、キャッシュされたデータがすぐに戻り値に存在する場合は、しかし、キャッシュされた値のドメイン層がIOスレッドのデータ層に登録されていない場合、ディスク上のデータまたは計算スレッド内でデータを生成し、以前の層が購読したスレッドに戻る必要がある場合。
もちろん、データの同時アクセスを考慮する必要があります。
ありがとうございます!
UPD:Observable Iドメインドメイン層を修復するために、.observeOn(AndroidSchedulers.mainThread())
を削除するだけでよいことを理解しています。私はサブスクリプションまたはUIとやりとりするが、Observableのどんなドメイン層でもやり取りしないところにいつも最終的に.observeOn(AndroidSchedulers.mainThread())
を追加するだけです。
ご協力いただきありがとうございます。問題はrxjavaスレッド処理に関する私の誤解でした。私の更新を参照してください。しかし、あなたの決断私の意見に予測不可能なバグのソースとしてお勧めしません – Dmytro
しかし、実際にはRxAndroidの担当者https://github.com/ReactiveX/RxAndroid/pull/247で同様の問題が見つかりましたが、誰もそれは問題を作成することができると言う。しかしcurrentThread()はまだリリース版ではまだありません – Dmytro