Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: mvi, architecture, state

Что такое MVI?

Вопрос проверяет знание архитектурного паттерна Model-View-Intent.

Короткий ответ

MVI - паттерн, где: View отправляет Intents, Model обрабатывает и возвращает State, View отображает State. Односторонний поток данных, иммутабельные состояния

Длинный ответ

Компоненты MVI:

  1. Model - хранит состояние и логику

  2. View - отображает состояние и отправляет интенты

  3. Intent - намерения пользователя

Принцип работы:

  1. Пользователь совершает действие → View отправляет Intent

  2. Model обрабатывает Intent → создает новое State

  3. View получает State → обновляет UI

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

  • Предсказуемость (один State)

  • Легко дебажить

  • Иммутабельность

Недостатки:

  • Больше boilerplate кода

  • Сложность для простых экранов

Пример (Kotlin):

// State
data class LoginState(
    val isLoading: Boolean,
    val error: String?,
    val isSuccess: Boolean
)

// Intent
sealed class LoginIntent {
    object Submit : LoginIntent()
    data class UpdateCredentials(val email: String, val pass: String) : LoginIntent()
}

// ViewModel
class LoginViewModel : ViewModel() {
    private val _state = MutableStateFlow(LoginState(false, null, false))
    val state: StateFlow<LoginState> = _state

    fun processIntent(intent: LoginIntent) {
        when (intent) {
            is LoginIntent.Submit -> login()
            is LoginIntent.UpdateCredentials -> updateCredentials(intent.email, intent.pass)
        }
    }
}
  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#mvi

#architecture

#state

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.