Rxjava2.0使用筆記一
阿新 • • 發佈:2019-01-11
在RxJava 中,Scheduler,相當於執行緒控制器,RxJava 通過它來指定每一段程式碼應該執行在什麼樣的執行緒。RxJava 已經內建了幾個 Scheduler ,它們已經適合大多數的使用場景。
Scheduler 的 API
1.Schedulers.immediate(): 直接在當前執行緒執行,相當於不指定執行緒。這是預設的 Scheduler。
2.Schedulers.newThread(): 總是啟用新執行緒,並在新執行緒執行操作。
3.Schedulers.io(): I/O 操作(讀寫檔案、讀寫資料庫、網路資訊互動等)所使用的 Scheduler。行為模式和 newThread() 差不多,區別在於 io() 的內部實現是用一個無數量上限的執行緒池,可以重用空閒的執行緒,因此多數情況下 io() 比 newThread() 更有效率。不要把計算工作放在 io() 中,可以避免建立不必要的執行緒。
4.Schedulers.computation(): **計算所使用的 Scheduler。這個計算指的是 CPU 密集型計算,即不會被 I/O 等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的執行緒池,大小為 CPU 核數。不要把 I/O 操作放在 computation() 中,否則 I/O 操作的等待時間會浪費 CPU。
5.Android 還有一個專用的** AndroidSchedulers.mainThread()**,它指定的操作將在 Android 主執行緒執行。
有了這幾個 Scheduler ,就可以使用 subscribeOn() 和 observeOn() 兩個方法來對執行緒進行控制了。subscribeOn(): 指定Observable(被觀察者)所在的執行緒,或者叫做事件產生的執行緒。observeOn():
指定 Observer(觀察者)所執行在的執行緒,或者叫做事件消費的執行緒。
Scheduler 的 API
1.Schedulers.immediate(): 直接在當前執行緒執行,相當於不指定執行緒。這是預設的 Scheduler。
2.Schedulers.newThread(): 總是啟用新執行緒,並在新執行緒執行操作。
3.Schedulers.io(): I/O 操作(讀寫檔案、讀寫資料庫、網路資訊互動等)所使用的 Scheduler。行為模式和 newThread() 差不多,區別在於 io() 的內部實現是用一個無數量上限的執行緒池,可以重用空閒的執行緒,因此多數情況下 io() 比 newThread() 更有效率。不要把計算工作放在 io() 中,可以避免建立不必要的執行緒。
4.Schedulers.computation(): **計算所使用的 Scheduler。這個計算指的是 CPU 密集型計算,即不會被 I/O 等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的執行緒池,大小為 CPU 核數。不要把 I/O 操作放在 computation() 中,否則 I/O 操作的等待時間會浪費 CPU。
5.Android 還有一個專用的** AndroidSchedulers.mainThread()**,它指定的操作將在 Android 主執行緒執行。
有了這幾個 Scheduler ,就可以使用 subscribeOn() 和 observeOn()