В примере Google указано, что для связи от фрагмента к фрагменту вы можете использовать ViewModel
, ограниченный Activity
.Проблема этого подхода заключается в том, что ViewModel
будет длиться до тех пор, пока Activity
не будет уничтожено.
В одном приложении Activity
это означает, что действие будет засоряться ViewModel
s.что может быть больше не нужно.У вас также будут проблемы с состояниями, если эти ViewModel
не будут очищены должным образом.
Поэтому я смотрю вокруг, как изменить жизненный цикл ViewModel
, чтобы мне не нужно былопривязан к жизненному циклу Activity
, но будет длиннее жизненного цикла Fragment
.Это будет очень полезно для многоэтапного / транзакционного потока экранов, где требования заполняются во время процесса потока экрана.
Таким образом, в принципе, я бы хотел, чтобы ViewModel был ограничен областью действия, но недлиннее фрагмента.
Для этого я создал свой собственный ViewModelStore
и сохранил его в конфигурации так же, как FragmentActivity
сохранил свой собственный ViewModelStore
.Затем при инициализации модели представления я буду использовать
ViewModelProvider(myCustomViewModelStore, myFactory).get(SomeViewModelClass::class.java)
Поскольку ViewModel
не ограничен моим пользовательским ViewModelStore
, я мог бы легко вызвать viewModelStore.clear()
для управленияЖизненный цикл ViewModel
.
Мне было интересно, является ли это хорошей идеей и использует ли кто-то ту же идею.
Заранее спасибо!