Что такое backpressure

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

Ответ

Backpressure — это механизм управления потоком данных, когда производитель генерирует данные быстрее, чем потребитель может их обработать. В Android/RxJava/Kotlin Flow это решается стратегиями:

  1. Buffer – буферизация данных (риск утечки памяти).
  2. Drop – пропуск данных (например, onBackpressureDrop() в RxJava).
  3. Latest – сохранять только последнее значение (onBackpressureLatest()).
  4. Ограничение – явное ограничение скорости (flowOn(Dispatchers.IO).buffer(100)).

Пример с Kotlin Flow:

flow {
    emit(1) // Быстрая генерация
}.buffer(10) // Буфер на 10 элементов
.collect { value -> 
    delay(100) // Медленная обработка
    println(value)
}