Есть ли кэширование во время backpressure в RxJava

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

Ответ

Да, кэширования во время backpressure в RxJava нет по умолчанию. Backpressure — это механизм контроля скорости обработки данных подписчиком. Если подписчик не успевает обрабатывать элементы, они могут быть отброшены (например, в стратегии onBackpressureDrop) или буферизованы (в onBackpressureBuffer), но это не кэширование в классическом понимании.

Пример с onBackpressureBuffer:

Observable.range(1, 1000)
    .onBackpressureBuffer(100) // буферизует до 100 элементов
    .subscribe { /* обработка */ }

Для кэширования данных лучше использовать операторы cache() или replay(), но они не связаны напрямую с backpressure.