Одним из обещаний ViewModel является то, что он выживает в таких случаях, как вращение экрана. Я все еще пытаюсь понять, как это организовать на практике.
При определенных событиях модели представление должно обновляться. Есть два основных варианта:
- ViewModel обновляет View.
- Представление наблюдает за ViewModel и обновляет себя.
В первом случае ViewModel нужна ссылка на представление. Я мог бы внедрить View в ViewModel, но мне кажется, что было бы лучше внедрить VieModel в View.
Каков лучший стиль, чтобы присоединиться к ним?
Затем после поворота снова вызывается метод onCreate(), запускающий инициализацию ViewModel во второй раз. Мне нужно проверить это, иначе я рискую зарегистрировать слушателей для фактической модели дважды и трижды и тому подобные проблемы. Возможно, мне даже придется сначала очистить отношения к старому взгляду.
Эта проверка кажется какой-то нечистой. Я бы ожидал, что в ViewModel будет специальный API для этого, если это будет стандартной практикой. Без меня есть ощущение, что я на ложном пути.
Каковы хорошие шаблоны, чтобы справиться с этим чистым стандартным способом?