Что такое MVI

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

Ответ

MVI (Model-View-Intent) — это архитектурный паттерн, основанный на однонаправленном потоке данных. Он похож на MVVM, но строже в управлении состоянием.

Основные компоненты:

  • Model — состояние экрана (immutable data class).
  • View — отображает состояние и отправляет интенты (пользовательские действия).
  • Intent — намерения пользователя (клики, свайпы и т.д.).

Пример состояния:

data class LoginState(
    val isLoading: Boolean = false,
    val error: String? = null,
    val isSuccess: Boolean = false
)

Преимущества:

  • Предсказуемость (состояние всегда явное).
  • Легко тестировать (чистые функции).
  • Нет утечек памяти (нет подписок вью).

Недостатки:

  • Больше шаблонного кода.
  • Сложнее для простых экранов.

Используется с RxJava/Coroutines + StateFlow.