多点传送

在前面我们使用热观察源,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") }

results matching ""

    No results matching ""