совет владельца viewModelProvider? - PullRequest
0 голосов
/ 04 апреля 2020

Для меня информация о ViewModelProvider не хватает некоторых деталей, и, как обычно, я обращаюсь к StackOverflow, чтобы выровнять вопросительные знаки.

В частности, у меня есть одно действие, состоящее из пары фрагментов, все которые представляют одни и те же данные по-разному. Каковы преимущества и недостатки использования действия в качестве владельца при создании экземпляра ViewModelProvider по сравнению с использованием фрагментов?

myViewModel = ViewModelProvider(owner).get(MyViewModel::class.java)

1 Ответ

0 голосов
/ 04 апреля 2020

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

То же, что и Observers, в качестве параметра используется lifecycleOwner. Это означает, что наблюдатель будет жить все время, пока активен фрагмент / активность. Если он вошел в OnStop, вам не нужно прекращать наблюдение вручную, так как его lifecyleOwner является действием / фрагментом.

Во-вторых Для разницы между использованием активности в качестве lifecycleOwner над фрагментом, экземпляр ViewModel будет поддерживать активность больше, чем определяя его внутри фрагмента. Как активность держит фрагменты. Один фрагмент может войти в onDetach (), поэтому мы гарантируем, что экземпляр этой ViewModel внутри фрагмента будет уничтожен. Но если мы определим это внутри деятельности, жизнь деятельности будет более продолжительной.

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

Надеюсь, все ясно.

Счастливое кодирование 101

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