Для создания произвольного Observable используется статический метод Observable.create(), который принимает параметром функциональный интерфейс ObservableOnSubscribe<T>.

ObservableOnSubscribe имеет один метод subscribe(emitter: ObservableEmitter<T>). Параметром принимается объект типа ObservableEmitter, который имеет методы onNext(value: T), onError(e: Throwable), onComplete(). Эти методы используются для передачи значений вниз по RxJava цепочке.

Помимо create() существует ряд фабричных методов, которые создают Observable из заданных элементов: