Зачем нужен Completable в RxJava

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

Ответ

Completable в RxJava используется для операций, где результат не важен, а важно только завершение (успешное или с ошибкой). Это полезно для side-эффектов, например, записи в БД, отправки аналитики или выполнения HTTP-запроса без возврата данных.

Пример:

fun updateLastSeen(userId: String): Completable {
    return Completable.fromAction {
        database.updateLastSeen(userId) // Без возвращаемого значения
    }
}

// Использование
updateLastSeen("123")
    .subscribe(
        { Log.d("Success", "Updated") },
        { Log.e("Error", it.message) }
    )

Ключевые особенности:

  • Не излучает элементов, только onComplete или onError
  • Оптимизирован для void-операций
  • Совместим с операторами RxJava (например, andThen для цепочек)