常用的是 Schedulers.io()进行耗时操作、和AndroidSchedulers.mainThread()更新ui
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等操作限制性的操作,例如图形的计算。这个Sheduler使用的固定的线程池,大小为cpu核数。不要把I/O放在computation中,否则I/O操作等待时间会浪费cpu。用于计算任务,如事件循环或和回调处理,不要用于IO操作(IO操作请使用Schedulers.io());默认线程数等于处理器
的数量
5. Schedulers.from(executor)
使用指定的Executor作为调度器。
6. Schedulers.trampoline()
当其它排队的任务完成后,在当前线程排队开始执行
7. AndroidSchedulers.mainThread()
在RxAndroid中,他指定操作将在Android主线程中执行。
指定线程
1. observerOn(Schedulers)
指定观察者Observer在哪个线程执行
2. subscribeOn(Scheduler)
指定被观察者Observable在哪个线程执行
Observable.doSubscribe() 它和Subscribe.onStart() 同样是在subscribe() 调用后而且在事件发送前执行,但区别在于它可以指定线程。
网友评论