rxAndroidのsubscribeOnとobserveOnの違い

よくわからなかったので動かしながら試したけど結論は

スレッドを変えたかったらobserveOnを使え!

ってことだった。

お試し1

お試し2

解説

ログを取って確認してみると以下のように動いている。

subscribeOn
Observableの動き出しのスレッドを指定。最初に指定されたものが使われる。
observeOn
以降が動くスレッドを指定:

となっている。

僕の理解ではObservable.just()の部分もmainで動くのかと思ったけど、Observable.create()からsubscribeOnで指定されたスレッドで動くっぽいように見える。subscribeOnはLibraryとか配るときにObservable.create()を動かすスレッドを固定することが出来るっていうのが利点。ライブラリ作って配布するとかしないのであれば使う必要なくてスレッドを変えたいだけならobserveOnを使わなければならない。