RxJava & RxAndroid简单使用(3)
来源:互联网 发布:易企cms怎么换模板 编辑:程序博客网 时间:2024/06/06 18:36
RxJava的异步机制线程的调度Scheduler
,RxJava内部有一个Schedulers类,里面有5种Scheduler类型,1.0里面有Schedulers.immediate( )
,而在2.0就去掉了,2.0有个新的类型Schedulers.single()
。最常用的就两种:Schedulers.io()
和AndroidSchedulers.mainThread()
。
Scheduler类型
- Schedulers.io() I/O 操作 内部实现是是用一个无数量上限的线程池
/** * Creates and returns a {@link Scheduler} intended for IO-bound work. * <p> * The implementation is backed by an {@link Executor} thread-pool that will grow as needed. * <p> * This can be used for asynchronously performing blocking IO. * <p> * Do not perform computational work on this scheduler. Use {@link #computation()} instead. * <p> * Unhandled errors will be delivered to the scheduler Thread's {@link java.lang.Thread.UncaughtExceptionHandler}. * * @return a {@link Scheduler} meant for IO-bound work */ public static Scheduler io() { return RxJavaPlugins.onIoScheduler(IO); }
- Schedulers.single() 单线程操作 2.0以上才加的,貌似1.0没有
/** * Returns the common, single-thread backed Scheduler instance. * <p> * Uses: * <ul> * <li>main event loop</li> * <li>support Schedulers.from(Executor) and from(ExecutorService) with delayed scheduling</li> * <li>support benchmarks that pipeline data from the main thread to some other thread and * avoid core-bashing of computation's round-robin nature</li> * </ul> * @return a {@link Scheduler} that shares a single backing thread. * @since 2.0 */ public static Scheduler single() { return RxJavaPlugins.onSingleScheduler(SINGLE); }
- Schedulers.immediate( )在当前线程立即开始执行任务 这个是1.0有,2.0没有这个类型了
1.0的immediate()方法的源码这里就不贴出来了
- Schedulers.newThread() 每次都启用新线程,并在新线程执行操作
/** * Creates and returns a {@link Scheduler} that creates a new {@link Thread} for * each unit of work. * <p> * Unhandled errors will be delivered to the scheduler * Thread's {@link java.lang.Thread.UncaughtExceptionHandler}. * * @return a {@link Scheduler} that creates new threads */ public static Scheduler newThread() { return RxJavaPlugins.onNewThreadScheduler(NEW_THREAD); }
- Schedulers.trampoline() 当其它排队的任务完成后,在当前线程排队开始执行
/** * Creates and returns a {@link Scheduler} that queues work on the current thread * to be executed after the * current work completes. * * @return a {@link Scheduler} that queues work on the current thread */ public static Scheduler trampoline() { return TRAMPOLINE; }
- Schedulers.computation() 用于计算任务,如事件循环或和回调处理,不要用于IO操作(IO操作请使用Schedulers.io());默认线程数等于处理器的数量
/** * Creates and returns a {@link Scheduler} intended for computational work. * <p> * This can be used for event-loops, processing callbacks and other computational work. * <p> * Do not perform IO-bound work on this scheduler. Use {@link #io()} instead. * <p> * Unhandled errors will be delivered to the scheduler Thread's * {@link java.lang.Thread.UncaughtExceptionHandler}. * * @return a {@link Scheduler} meant for computation-bound work */ public static Scheduler computation() { return RxJavaPlugins.onComputationScheduler(COMPUTATION); }
- Schedulers.from(executor)
/** * Converts an {@link Executor} into a new Scheduler instance. * * @param executor * the executor to wrap * @return the new Scheduler wrapping the Executor */ public static Scheduler from(Executor executor) { return new ExecutorScheduler(executor); }
Schedulers的简单使用
Observable.just(1, 2, 3) .subscribeOn(Schedulers.io()) //订阅事件发生在io线程 .observeOn(AndroidSchedulers.mainThread())//在主线程中观察 .subscribe(new Observer<Integer>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Integer value) { } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });
0 0
- RxJava & RxAndroid简单使用(3)
- RxJava & RxAndroid简单使用(1)
- RxJava & RxAndroid简单使用(2)
- RxJava & RxAndroid简单使用(4)
- RxAndroid和RxJava的简单使用
- Rxjava RxAndroid 使用
- RxJava漫谈-RxAndroid使用
- RXjava/RxAndroid/lambdas 简单demo
- RxJava RxAndroid基本使用介绍
- RxJava和RxAndroid使用详解
- RxJava(RxAndroid)基本使用入门
- RxJava RxAndroid基本使用介绍
- RxJava(RxAndroid)基本使用入门
- RxJava(RxAndroid)基本使用入门
- RxJava(RxAndroid)基本使用入门
- RxJava 和 RxAndroid 四(RxBinding的使用)
- RxJava 和 RxAndroid 四(RxBinding的使用)
- RxJava 和 RxAndroid 二(操作符的使用)
- 阿里实习生测试二面(2017.4.11)
- 从源码分析ArrayList和Vector区别
- 电源键关机
- OOP思想应该怎样来理解?
- 使用MVP+Retrofit+RxJava实现的的Android Demo (上)使用Nuclues库实现MVP
- RxJava & RxAndroid简单使用(3)
- POJ-3621-01分数规划,spfa判负环
- Android app 内存分配
- pthread_cond_broadcast与pthread_cond_signal使用区别
- 图解之TCP三次握手与四次挥手
- 阻止click点击事件
- 源码分析mycat1.6之网络篇---前端线程模型下篇(读写事件篇)
- 【GIT 基础篇五】绝杀技之远程仓库(搭建)
- 解题报告:HDU 4111 Alice and Bob 递推|博弈