Кто в слушателя жизненного цикла пихает данные

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

Ответ

В LifecycleObserver не следует помещать данные, так как его задача — реагировать на изменения жизненного цикла, а не хранить состояние. Для данных используйте:

  1. ViewModel — для хранения UI-данных, переживающих поворот экрана
  2. SavedStateHandle — для сохранения/восстановления данных при убийстве процесса
  3. Репозиторий/DataSource — для бизнес-логики и работы с сетью/БД

Пример неправильного подхода:

class BadObserver : LifecycleObserver {
    var userData: String? = null // ❌ Не храните данные здесь

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun loadData() {
        // загрузка данных прямо в Observer
    }
}

Правильно — делегировать эти задачи соответствующим компонентам архитектуры.