Какие знаешь сущности в RxJava

«Какие знаешь сущности в RxJava» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Observable — поток данных, который может испускать 0, 1 или множество элементов.
Single — поток с одним элементом или ошибкой (например, результат сетевого запроса).
Maybe — может испустить 1 элемент, завершиться без элемента или с ошибкой.
Completable — не испускает элементы, только сигнал завершения или ошибки.
Flowable — аналог Observable, но с поддержкой backpressure (для больших потоков данных).

Пример:

Observable.just(1, 2, 3)  
    .subscribe { println(it) }  

Single.just("Success")  
    .subscribe({ println(it) }, { it.printStackTrace() })  

Дополнительно:

  • Subject (PublishSubject, BehaviorSubject и др.) — одновременно Observable и Observer.
  • Disposable — управление подпиской для отмены.