![Image of cold observable](https://camo.githubusercontent.com/3644ff49f3c10eff430e6abd9e437ba91a16e311b4816bf6bf6889a7b1c99346/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f313630302f312a6d4b49346d4e48657345316266586b36594a5f7245412e706e67)
- Observable only emit item when has subscribe
- It will emit again when has new subscribe
var coldObservable = Observable.create<Int> {
for (i in 0..2) {
println("Source Emit $i")
it.onNext(i)
}
}
coldObservable.subscribe({
println("onNext, subscriber1: $it")
}, {})
coldObservable.subscribe({
println( "onNext, subscriber2: $it")
}, {})
Source Emit 0
onNext, subscriber1: 0
Source Emit 1
onNext, subscriber1: 1
Source Emit 2
onNext, subscriber1: 2
Source Emit 0
onNext, subscriber2: 0
Source Emit 1
onNext, subscriber2: 1
Source Emit 2
onNext, subscriber2: 2
![Image of hot observable](https://camo.githubusercontent.com/ee833c0b8cadf0d12f5d4058b43322fa2dd7d09f4bbf330c78139fbb54836e20/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f313630302f312a67537764445930506f4630685552307947634e705a412e706e67)
- Observable emit item when created
- Observable doesn't again emit when has a new subscribe
var coldObservable = Observable.interval(1, TimeUnit.SECONDS)
.doOnNext {
println("Emitted $it")
}
var connectableObservable: ConnectableObservable<Long> = coldObservable.publish()
connectableObservable.connect()
Thread.sleep(2000)
connectableObservable.subscribe({
println("onNext, subscriber1: $it")
}, {})
Thread.sleep(2000)
connectableObservable.subscribe({
println( "onNext, subscriber2: $it")
}, {}))
Emitted 0
Emitted 1
Emitted 2
onNext, subscriber1: 2
Emitted 3
onNext, subscriber1: 3
Emitted 4
onNext, subscriber1: 4
onNext, subscriber2: 4