指定一個(gè)觀(guān)察者在哪個(gè)調(diào)度器上觀(guān)察這個(gè)Observable
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/observeOn.c.png" alt="observeOn" />
很多ReactiveX實(shí)現(xiàn)都使用調(diào)度器 "Scheduler"來(lái)管理多線(xiàn)程環(huán)境中Observable的轉(zhuǎn)場(chǎng)。你可以使用ObserveOn操作符指定Observable在一個(gè)特定的調(diào)度器上發(fā)送通知給觀(guān)察者 (調(diào)用觀(guān)察者的onNext, onCompleted, onError方法)。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/observeOn.e.png" alt="observeOn" />
注意:當(dāng)遇到一個(gè)異常時(shí)ObserveOn會(huì)立即向前傳遞這個(gè)onError終止通知,它不會(huì)等待慢速消費(fèi)的Observable接受任何之前它已經(jīng)收到但還沒(méi)有發(fā)射的數(shù)據(jù)項(xiàng)。這可能意味著onError通知會(huì)跳到(并吞掉)原始Observable發(fā)射的數(shù)據(jù)項(xiàng)前面,正如圖例上展示的。
SubscribeOn操作符的作用類(lèi)似,但它是用于指定Observable本身在特定的調(diào)度器上執(zhí)行,它同樣會(huì)在那個(gè)調(diào)度器上給觀(guān)察者發(fā)通知。
RxJava中,要指定Observable應(yīng)該在哪個(gè)調(diào)度器上調(diào)用觀(guān)察者的onNext, onCompleted, onError方法,你需要使用observeOn操作符,傳遞給它一個(gè)合適的Scheduler。