В каком классе хранить состояния State

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

Ответ

Состояния (State) в Android приложении лучше хранить в ViewModel. ViewModel сохраняет данные при изменениях конфигурации (например, поворот экрана) и обеспечивает чистую архитектуру, отделяя UI-логику от данных.

Если состояние должно пережить уничтожение процесса, используйте SavedStateHandle внутри ViewModel или onSaveInstanceState() в Activity/Fragment.

Пример:

class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
    val counter: MutableLiveData<Int> = savedStateHandle.getLiveData("count", 0)

    fun increment() {
        counter.value = (counter.value ?: 0) + 1
    }
}

Для сложных состояний (например, мультиэкранных) можно использовать StateFlow/SharedFlow или архитектурные подходы (MVI, Redux).