2017-10-12 31 views
1

我正在學習RxJava,我對Scheduler有一些疑問。 何時使用哪一個。 AndroidSchedulers.mainThread()是相當簡單明瞭的,當我們需要來到Android UI線程時,我們可以使用這個調度器。 但我很困惑,在許多樣品我見過pepople使用Schedulers.io()Schedulers.computation()網絡呼叫其他SchedulersRxJava:如何選擇正確的調度程序

  • Schedulers.io()
  • Schedulers.computation()

  • Schedulers.newThread()

, 數據庫操作等可以w是否隨機選擇其中任何一個進行後臺任務? 如果不是哪個是合適的情況下選擇每個?何時使用Schedulers.newThread()? 如果有人能用簡單的語言解釋它會有所幫助。提前致謝!!

+1

上'Schedulers'每種方法都有詳細的Javadoc暗示用法:http://reactivex.io/RxJava/2。 x/javadoc/io/reactivex/schedulers/Schedulers.html – akarnokd

+0

對每個後臺操作都使用'newThread()'好嗎? – Jrd

+0

如果你不介意創建大量的線程,那麼是的。否則,'io()'確實重用了線程並且更經濟。 – akarnokd

回答

1

io():當你想執行I/O綁定工作,如數據庫請求,網絡調用等使用io。此調度程序由無限的線程池支持(如果您發瘋且正在使用的線程數可能會導致OutOfMemory錯誤)。它實質上意味着你每次都不會得到創建新線程的開銷。查看更多Why is creating thread expensive?

newThread():顧名思義,它會每隔一段時間創建一個新線程。

computation:如果你有一些昂貴的CPU綁定操作,你應該使用這個調度器。這個調度器是有限的,即基於系統的線程數量有限。

正如其他人指出,請一起來看看官方文檔來了解更多here