首先來說observeOn和subscribeon都是對observable的一種操作,區別就是subscribeOn改變了observable本身產生事件的schedule以及發出事件後相關處理事件的程序所在的schedule,而obseveron僅僅是改變了對發出事件後相關處理事件的程序所在的schedule。
或許你會問,這有多大的區別嗎?的確是有的,比如說產生observable事件是一件費時可能會卡主線程的操作(比如說獲取網絡數據),那麼subscribeOn就是你的選擇,這樣可以避免卡住主線程。兩者最主要的差別是影響的範圍不同,observeOn is more limited,但是卻是可以多次調用,多次改變不同的接受者所在的schedule,在調用這個函數之後的observable造成影響。而subscribeon則是一次性的,無論在什麼地方調用,總是從改變最原始的observable開始影響整個observable的處理