Какие знаешь проблемы в RxJava

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

Ответ

  1. Утечки памяти из-за неправильной отписки (например, в Activity/Fragment без CompositeDisposable).
  2. Сложность отладки из-за цепочек операторов и асинхронности.
  3. Ошибки в цепочках, например, пропуск subscribeOn/observeOn, ведущий к выполнению в неправильном потоке.
  4. Backpressure в Observable при быстрой эмиссии событий (решается Flowable).
  5. Избыточность для простых задач, где LiveData или Coroutines были бы проще.

Пример утечки:

val disposable = Observable.interval(1, TimeUnit.SECONDS)
    .subscribe { /* ... */ } // Утечка, если не отписаться в onDestroy()

Решение: Использовать CompositeDisposable и очищать в onDestroy().