Replay 保证所有的观察者收到相同的数据序列,即使它们在Observable开始发射数据之后才订阅 可连接的Observable (connectable Observable)与普通的Observable差不多,不过它并不会在被订阅时开始发射数据,而是直到使用了Connect操作符时才会开始。用这种方法,你可以在任何时候让一个Observable开始发射数据。 如果在将一个Observabl
RefCount 让一个可连接的Observable行为像普通的Observable 可连接的Observable (connectable Observable)与普通的Observable差不多,不过它并不会在被订阅时开始发射数据,而是直到使用了Connect操作符时才会开始。用这种方法,你可以在任何时候让一个Observable开始发射数据。 RefCount操作符把从一个可连接的Obser
Publish 将普通的Observable转换为可连接的Observable 可连接的Observable (connectable Observable)与普通的Observable差不多,不过它并不会在被订阅时开始发射数据,而是直到使用了Connect操作符时才会开始。用这种方法,你可以在任何时候让一个Observable开始发射数据。 RxJava的实现为publish。 Javadoc:
Connect 让一个可连接的Observable开始发射数据给订阅者 可连接的Observable (connectable Observable)与普通的Observable差不多,不过它并不会在被订阅时开始发射数据,而是直到使用了Connect操作符时才会开始。用这个方法,你可以等待所有的观察者都订阅了Observable之后再开始发射数据。 RxJava中connect是Connectab
这一节解释ConnectableObservable 和它的子类以及它们的操作符: ConnectableObservable.connect( ) — 指示一个可连接的Observable开始发射数据 Observable.publish( ) — 将一个Observable转换为一个可连接的Observable Observable.replay( ) — 确保所有的订阅者看到相同的数据序列,
下面的这些操作符属于单独的rxjava-async模块,它们用于将同步对象转换为Observable。 start( ) — 创建一个Observable,它发射一个函数的返回值 toAsync( ) or asyncAction( ) or asyncFunc( ) — 将一个函数或者Action转换为已Observable,它执行这个函数并发射函数的返回值 startFuture( ) — 将
Using 创建一个只在Observable生命周期内存在的一次性资源 Using操作符让你可以指示Observable创建一个只在它的生命周期内存在的资源,当Observable终止时这个资源会被自动释放。 using操作符接受三个参数: 一个用户创建一次性资源的工厂函数 一个用于创建Observable的工厂函数 一个用于释放资源的函数 当一个观察者订阅using返回的Observable时,
Timestamp 给Observable发射的数据项附加一个时间戳 RxJava中的实现为timestamp,它将一个发射T类型数据的Observable转换为一个发射类型为Timestamped<T>的数据的Observable,每一项都包含数据的原始发射时间。 timestamp默认在immediate调度器上执行,但是可以通过参数指定其它的调度器。 Javadoc: timestamp()
Timeout 对原始Observable的一个镜像,如果过了一个指定的时长仍没有发射数据,它会发一个错误通知 如果原始Observable过了指定的一段时长没有发射任何数据,Timeout操作符会以一个onError通知终止这个Observable。 RxJava中的实现为timeout,但是有好几个变体。 第一个变体接受一个时长参数,每当原始Observable发射了一项数据,timeout就
TimeInterval 将一个发射数据的Observable转换为发射那些数据发射时间间隔的Observable TimeInterval操作符拦截原始Observable发射的数据项,替换为发射表示相邻发射物时间间隔的对象。 RxJava中的实现为timeInterval,这个操作符将原始Observable转换为另一个Observable,后者发射一个标志替换前者的数据项,这个标志表示前者的
SubscribeOn 指定Observable自身在哪个调度器上执行 很多ReactiveX实现都使用调度器 “Scheduler“来管理多线程环境中Observable的转场。你可以使用SubscribeOn操作符指定Observable在一个特定的调度器上运转。 ObserveOn操作符的作用类似,但是功能很有限,它指示Observable在一个指定的调度器上给观察者发通知。 在某些实现中还
Subscribe 操作来自Observable的发射物和通知 Subscribe操作符是连接观察者和Observable的胶水。一个观察者要想看到Observable发射的数据项,或者想要从Observable获取错误和完成通知,它首先必须使用这个操作符订阅那个Observable。 Subscribe操作符的一般实现可能会接受一到三个方法(然后由观察者组合它们),或者接受一个实现了包含这三个方
Serialize 强制一个Observable连续调用并保证行为正确 一个Observable可以异步调用它的观察者的方法,可能是从不同的线程调用。这可能会让Observable行为不正确,它可能会在某一个onNext调用之前尝试调用onCompleted或onError方法,或者从两个不同的线程同时调用onNext方法。使用Serialize操作符,你可以纠正这个Observable的行为,保
ObserveOn 指定一个观察者在哪个调度器上观察这个Observable 很多ReactiveX实现都使用调度器 “Scheduler“来管理多线程环境中Observable的转场。你可以使用ObserveOn操作符指定Observable在一个特定的调度器上发送通知给观察者 (调用观察者的onNext, onCompleted, onError方法)。 注意:当遇到一个异常时ObserveO
Do 注册一个动作作为原始Observable生命周期事件的一种占位符 你可以注册回调,当Observable的某个事件发生时,Rx会在与Observable链关联的正常通知集合中调用它。Rx实现了多种操作符用于达到这个目的。 RxJava实现了很多Do操作符的变体。 doOnEach doOnEach操作符让你可以注册一个回调,它产生的Observable每发射一项数据就会调用它一次。你可以以A