ViewModel с несколькими фрагментами

Я просто думаю о MVVM, когда дело доходит до нижнего представления навигации.

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

Если я не использую модель представления, тогда я буду хранить только один фрагмент данных за раз.

Я что-то упускаю?

2
0
1 146
1

Ответы 1

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

В вашем случае, если у вас есть несколько фрагментов, вы можете создать ViewModel для каждого из них (если они, конечно, разные).

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

Если вы по-прежнему хотите передать ViewModel ответственность за сообщение активности, когда следует заменить / удалить / изменить фрагмент, вы можете определить интерфейс в каждой модели (или общем интерфейсе), который будет действовать как обратный вызов, и вы можете установить это обратный вызов на вашей ViewModel в onAttach или в другом месте, которое вам подходит.

Теперь ваш фрагмент может передать ответственность за уведомление об активности ViewModel. Я думаю, что это один из способов приблизиться к шаблону MVVM в случае взаимодействия Activity / Fragment без особых проблем.

Другие вопросы по теме