Ответ
При сохранении ViewModel могут возникнуть следующие проблемы:
-
Слишком большой объем данных - сохранение больших объектов (например, Bitmap) в Bundle может привести к TransactionTooLargeException. Решение - сохранять только необходимые данные.
-
Несериализуемые объекты - попытка сохранить не-Parcelable/Serializable объекты вызовет исключение. Пример:
// Неправильно:
data class User(val image: Bitmap) // Bitmap не Serializable
// Правильно:
data class User(val imagePath: String) // Сохраняем путь
-
Проблемы с жизненным циклом - onSaveInstanceState() вызывается до onStop(), но данные могут понадобиться раньше.
-
Потеря ссылок - сохраненные данные могут устареть, если исходные объекты изменились.
-
Сложные зависимости - трудно сохранить объекты с циклическими ссылками.
Лучшая практика - сохранять минимально необходимые примитивы и строки, а сложные объекты восстанавливать из репозитория.