2017-10-17 7 views
0

観測可能なコードをメインスレッドとは別のスレッドで実行したい。私はこれを行うことができますどのように、私はこのようにやっている:RxJava:メインスレッドとは別のスレッドで観測可能にする方法

Observable operationObservable = Observable.create(new ObservableOnSubscribe() { 
     @Override 
     public void subscribe(ObservableEmitter e) throws Exception { 
      e.onNext(longRunningOperation()); 
      e.onComplete(); 
     } 
    }) 
    .subscribeOn(Schedulers.io()) // subscribeOn the I/O thread 
    .observeOn(AndroidSchedulers.mainThread()); 
+0

まあ、 'observeOn'内の別のスレッドを使用してみては? –

+0

'Observable'は' ObserveOn'演算子によって特定のスケジューラーのオブザーバーに通知を送信するよう指示できます。あなたが 'Scheduler'を実装している' Scheduler'または 'Scheduler'を使って、 – Kathi

+0

を観察することができます。 'subscribeOn'は' ObservableOnSubscribe.subscribe'の本体がIO SchedulerのIOスレッドの1つで実行されていることを確認します。 – akarnokd

答えて

2

あなたはあなただけsubscribeOn(Schedulers.newThread())を使用することができます上で何かを実行するために、新しいスレッドを必要とする場合。

また、ほとんどの場合、実際には不要な独自のスケジューラとエグゼキュータを作成することもできます。

さらに読書: link1 link2 link3

関連する問題