Какие знаешь проблемы при сохранении ViewModel

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

Ответ

При сохранении ViewModel могут возникнуть следующие проблемы:

  1. Слишком большой объем данных - сохранение больших объектов (например, Bitmap) в Bundle может привести к TransactionTooLargeException. Решение - сохранять только необходимые данные.

  2. Несериализуемые объекты - попытка сохранить не-Parcelable/Serializable объекты вызовет исключение. Пример:

// Неправильно:
data class User(val image: Bitmap) // Bitmap не Serializable

// Правильно:
data class User(val imagePath: String) // Сохраняем путь
  1. Проблемы с жизненным циклом - onSaveInstanceState() вызывается до onStop(), но данные могут понадобиться раньше.

  2. Потеря ссылок - сохраненные данные могут устареть, если исходные объекты изменились.

  3. Сложные зависимости - трудно сохранить объекты с циклическими ссылками.

Лучшая практика - сохранять минимально необходимые примитивы и строки, а сложные объекты восстанавливать из репозитория.