Создание моего собственного ViewModelStore для управления жизненным циклом ViewModel - PullRequest
0 голосов
/ 01 марта 2019

В примере 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.

Мне было интересно, является ли это хорошей идеей и использует ли кто-то ту же идею.

Заранее спасибо!

1 Ответ

0 голосов
/ 03 июля 2019

Начиная с Навигационный компонент 2.1.0-aplha02 , ViewModel s теперь может быть ограничен для потоков транзакций через Navigation Component навигационный график.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...