Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

ViewModel

8-й курс/Закрытая зона

Жизненный цикл активности очень сложный. Достаточно вспомнить случай с поворотом экрана, когда активность убивается, затем заново создаётся. При этом данные пропадают. Раньше для решения проблемы приходилось запоминать данные в специальном контейнере через onSaveInstanceState и onRetainNonConfigurationInstance() (не является полным аналогом, но очень похоже) или Loader (признан устаревшим), а затем восстанавливать их. В сложных проектах такой подход не слишком удобен. Не всегда данные находятся внутри активности, они могут поступать из базы данных или из HTTP-запроса. Постоянно запрашивать данные из-за поворота расточительно и неудобно.

Поэтому был предложен отдельный довесок к активности или к фрагменту, в которой данные живут независимо от жизненного цикла активности/фрагмента. С таким подходом повороты экрана стали не страшны, данные остаются нетронутыми в песочнице, и их можно достать в любой момент времени. Создавать можно несколько подобных песочниц одновременно для разных задач.

ViewModel был представлен в 2017 году в составе Android Architecture Components (пакет android.arch.lifecycle). Затем перенесли в AndroidX. При этом продукт постоянно развивается, названия зависимостей менялись. Первоначальную версию статьи под Java удалил, так как часть методов объявили устаревшими.

Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью

Дополнительное чтение

Реклама