/ / RxJava複数のスレッドで観測可能なオブジェクトを観測する - マルチスレッド、レルム、rx-java

マルチスレッド、レルム、rx-javaの複数のスレッドで観測可能なオブジェクトを追跡するRxJava

私はRxJava、領域と改造を利用したアプリケーションに取り組んでいます。

私は非常に特定のデータ処理チェーンを作成する必要があります。 Retrofitコールを io スケジューラー、次に私のカスタムシングルスレッドで提供されたデータを処理する realm スケジューラー、そして結果を私のUIに押し出す mainThread スケジューラ。私はこれを、 observeOn そして subscribeOn 私は中間部分を実行することはできません realm sheduler。

私の目標はこのようなものです scheduler: io ---------------> realm -----------------> mainthread action : retrofit call-----> database update -------> ui update

どの観察可能な作業が特定のスレッド上で行われるか、そのような観察可能な連鎖を作成するにはどうすればよいですか?

ありがとうございました

回答:

回答№1の場合は3

を見て Observable.observeOn(...) 方法。このメソッドは、指定されたスケジューラで発生したすべての操作を確実に行います。

カスタム "レルム"スケジューラをサポートするには、RxJavaが作業をスケジュールするための何らかの方法を提供する必要があります。標準を使用している場合 ExecutorExecutors.newSingleThreadExecutor() Realmのシングルスレッドポリシーをサポートするために) Schedulers.from(Executor) その特定の環境で実行するスケジューラを作成する Executor.

ExecutorService realm = Executors.newSingleThreadExecutor();
Scheduler realmScheduler = Schedulers.from(realm);
Retrofit source;

source.call()
.subscribeOn(Schedulers.io())
.observeOn(realmScheduler)
.map(DataBaseUpdate)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(UIUpdate)