多点传送
在前面我们使用热观察源,connectableObservable,多个观察者可以订阅这个观察源,观察源同时发送信息源出去,让订阅他的观察者订阅
connectableObservable
热观察源代表类
var conObser = Observable.just("ASSS", "BBBB").map { Math.random() }.publish()
conObser.subscribe { println("Observable 1 :$it") }
conObser.subscribe { println("Observable 2 :$it") }
conObser.connect()
autoConnect
就是不需要用户调用connect,直接在定义的时候调用autoConnect 方法,可以看出,还可以指定可以订阅的最大次数,如果订阅的观察者多于次数限制,后面的订阅的将不会起作用。
var conObser = Observable.just("ASSS", "BBBB").map { Math.random() }.publish().autoConnect(1)
conObser.subscribe { println("Observable 1 :$it") }
conObser.subscribe { println("Observable 2 :$it")
refCount
和autoConnect 类似,唯一区别如果没有观察者订阅,他会自动关闭,直到有新的观察者订阅他
var conObser = Observable.just("ASSS", "BBBB").map { Math.random() }.publish().refCount()
conObser.subscribe { println("Observable 1 :$it") }
conObser.subscribe { println("Observable 2 :$it") }