Нужны ли последние данные во время backpressure в RxJava

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

Ответ

Во время backpressure в RxJava последние данные не нужны, так как цель backpressure — управление потоком данных, чтобы избежать перегрузки подписчика. Однако, если требуется обрабатывать только последние данные, можно использовать стратегии:

  • Latest: onBackpressureLatest() — сохраняет последний элемент, отбрасывая предыдущие.
  • Drop: onBackpressureDrop() — отбрасывает новые элементы, если подписчик не готов.
  • Buffer: onBackpressureBuffer() — буферизует элементы (может привести к OOM).

Пример:

Observable.range(1, 1000)  
    .onBackpressureLatest()  
    .subscribe { println(it) }  

Здесь обработается только последний элемент, если подписчик не успевает.