Связка - это класс, используемый для передачи данных между компонентами андроида, такими как действия, фрагменты и т. Д.
В основном для действия , когда действиеВ случае каких-либо изменений конфигурации, пакет помогает сохранить небольшое количество пользовательских данных, которые будут восстановлены после применения новой конфигурации.Из-за ограниченного объема памяти, предоставляемой любому приложению, утверждается, что
этот подход подходит только для небольших объемов данных, которые можно сериализовать, а затем десериализовать, а не для потенциально больших объемов данных, таких каксписок пользователей или растровых изображений .
Кроме того, это не имеет ничего общего с жизненным циклом активности.
С Руководство по ViewModel заявлено, что
Класс ViewModel
предназначен для хранения и управления данными, связанными с пользовательским интерфейсом сознательно жизненным циклом .Класс ViewModel
позволяет данным переживать изменения конфигурации, такие как повороты экрана.
Таким образом, любые данные, которые вам необходимы, чтобы выдержать любые изменения конфигурации, могут быть частью класса ViewModel
, это может быть любойбольшой объем данных.
Дайте мне знать, если все еще в замешательстве, надеюсь, это поможет!
Редактировать :
Разница в тонкой линии
Пакет - это то, что обеспечивается активностью после изменения конфигурации.Таким образом, OS отправляет основной пакет намерения.Затем ОС создает новое действие (да, это новый объект того же действия), отменяет передачу данных и передает намерение новому действию.
Объекты ViewModel являются чем-токоторые предоставляются ViewModelFactory
, что находится вне контекста действия и не зависит от экземпляра действия.