В чем разница между Observable и Flowable

«В чем разница между Observable и Flowable» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Observable и Flowable — это реактивные типы из RxJava, но с разной стратегией обработки backpressure (перегрузки данных).

  • Observable:
    Не поддерживает backpressure. Подходит для синхронных или небольших потоков данных, где нет риска перегрузки (например, UI-события).

  • Flowable:
    Поддерживает backpressure. Оптимален для асинхронных операций с большим объемом данных (например, сетевые запросы, чтение файлов).

// Observable (без backpressure)  
Observable.just(1, 2, 3)  
    .subscribe { println(it) }  

// Flowable (с backpressure)  
Flowable.range(1, 1000)  
    .onBackpressureBuffer()  
    .subscribe { println(it) }  

Выбор зависит от контекста: если данных немного — Observable, если возможна перегрузка — Flowable.