Описание тега android-viewmodel
Контроллеры UI, такие как activities
а также fragments
в первую очередь предназначены для отображения данных пользовательского интерфейса, реакции на действия пользователя или обработки взаимодействия с операционной системой, например запросов разрешений. Требование, чтобы контроллеры пользовательского интерфейса также отвечали за загрузку данных из базы данных или сети, добавляет классу раздувание. Возложение чрезмерной ответственности на контроллеры пользовательского интерфейса может привести к тому, что один класс будет пытаться обрабатывать всю работу приложения самостоятельно, вместо того, чтобы делегировать работу другим классам. Возложение чрезмерной ответственности на контроллеры пользовательского интерфейса таким образом также значительно усложняет тестирование.
Проще и эффективнее отделить владение данными представления от логики контроллера пользовательского интерфейса и ViewModel
помогает в разделении данных и пользовательского интерфейса для данных. Architecture Components
обеспечивает ViewModel
вспомогательный класс для контроллера пользовательского интерфейса, который отвечает за подготовку данных для пользовательского интерфейса. ViewModel
объекты автоматически сохраняются при изменении конфигурации, поэтому данные, которые они хранят, немедленно становятся доступными для следующего действия или экземпляра фрагмента.