Ответ
Backpressure в RxJava — это механизм управления потоком данных между Observable (источник) и Subscriber (потребитель), когда источник генерирует данные быстрее, чем потребитель может их обработать.
Проблема: без backpressure быстрый источник может переполнить память, если подписчик не успевает обрабатывать элементы.
Решение:
Flowable— специальный тип, поддерживающий backpressure.- Стратегии обработки (
BackpressureStrategy):BUFFER— буферизирует элементы (рискOutOfMemoryError).DROP— отбрасывает лишние элементы.LATEST— оставляет только последний элемент.ERROR— выбрасываетMissingBackpressureException.
Пример:
Flowable.range(1, 1_000_000)
.onBackpressureDrop { println("Dropped: $it") }
.observeOn(Schedulers.io())
.subscribe { Thread.sleep(10); println(it) }
Здесь onBackpressureDrop отбрасывает элементы, если подписчик не успевает.