В чем разница между onNext и onSuccess

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

Ответ

onNext и onSuccess — это методы обратного вызова в RxJava, но используются в разных контекстах:

  • onNext вызывается для каждого элемента в Observable/Flowable при их эмиссии (поток данных).
  • onSuccess вызывается единожды в Single/Maybe/Completable при успешном завершении (результат или подтверждение).

Пример:

// Observable (множество элементов)
Observable.just(1, 2, 3)
    .subscribe { value -> println("onNext: $value") }

// Single (один элемент/ошибка)
Single.just(42)
    .subscribe(
        { value -> println("onSuccess: $value") },
        { error -> println("onError") }
    )

Ключевое отличие:

  • onNext — для потоков с несколькими элементами.
  • onSuccess — для однократных операций (например, сетевой запрос).