2017-10-10 9 views
-1

initialize()メソッドはうまくいっていましたが、他の呼び出しと同じioスレッド(ioScheduler)で動作する必要があります。RxJava Single.createがスレッドを指定できません

internal fun initialize(): Single<Boolean> { 
    return Single.create<Any> { singleEmitter -> 
     singleEmitter.onSuccess(true) 
    } 
    .observeOn(ioScheduler) 
    .subscribe() as Single<Boolean> 
} 

しかし、それは新たな問題を作成します:

ConsumerSingleObserverはio.reactivex.Single

にキャストすることができない私は、このコードにそれを変更しようとした

fun initialize(): Single<Boolean> { 
    return Single.create { callback -> 
       callback.onSuccess(true) 
    } 
} 

また、これを試しました:

Completable.fromAction { someMethod() } 
      .subscribeOn(ioScheduler) 
      .subscribe() 

しかし、それはブール値を返しません。

+0

'SubscribeOn'は' Single.create() 'ではどのように動作していませんか? – akarnokd

+1

ジム、長い時間は見ない –

+0

@TimCastelijnsすでに卒業していますか? ;)そうなら、これを解決してください。私はあなたがそれを行うことができます知っている;) –

答えて

-1

ブールを受信しませんよりも、あなたは、UIスレッドからメソッドを呼び出している場合は、IOスレッド上Completableを購読しているとして、あなたはUIスレッド上で、それを遵守する必要があり、明示的に

+0

質問を読んでください。 –

1

これは私の作品:

internal fun initialize(): Single<Boolean> { 
    return Single.create<Boolean> { singleEmitter -> 
     singleEmitter.onSuccess(true) 
    } 
    .observeOn(Schedulers.io()) 
} 

出力はブール値なので、の正確な型パラメータとして<Boolean>を指定する必要があります。さらに、チェーンを返却し、購読しないでください。

関連する問題