2017-10-12 73 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