Un Observable comienza a emitir una secuencia de elementos cuando el Observador se suscribe: se denominan observables fríos. Los observables fríos siempre esperan tener al menos un observador suscrito para comenzar a emitir elementos.
Por otro lado, un observable que comienza a emitir elementos antes de conectarse a un observador se denomina observable caliente. Con los observables calientes, un observador puede suscribirse y comenzar a recibir elementos en cualquier momento durante la emisión. Con observables calientes, el observador puede recibir la secuencia completa de elementos comenzando desde el principio o no.
Veamos un ejemplo más concreto, pero simple.
Creemos un Observable que emita todos los números enteros del 1 al 5 y suscríbase a él:
Observable<Integer> observable = Observable.from(new Integer[]{1, 2, 3, 4, 5});
observable.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
System.out.println("Sequence completed!");
}
@Override
public void onError(Throwable e) {
System.err.println("Exception: " + e.getMessage());
}
@Override
public void onNext(Integer integer) {
System.out.println("next item is: " + integer);
}
});