- должен ли я использовать только одну модель представления для каждой вкладки или одну модель представления с разными экранами.
Вы должны использовать наименьшую область действия для каждой ViewModel возможный. Как правило, это означает, что данные, связанные только с одним фрагментом, должны использовать ViewModel, связанный только с этим одним фрагментом.
Поскольку у меня есть только одно действие и просмотр, модель находится до тех пор, пока действие не будет уничтожено. У всех viewModel, которые я создам для каждого экрана, будут данные, пока активность не будет уничтожена. Если это так, это сделает мое приложение тяжелым.
ViewModels живут только до тех пор, пока существует ViewModelStore
, к которому они прикреплены. Поэтому, если у вас есть ViewModel, связанная с фрагментом, он будет существовать только до тех пор, пока существует этот фрагмент. Например, если этот фрагмент выскочил из спины или вы вызываете remove()
, то ViewModel уничтожается. ViewModels будут жить так же долго, как и ваша деятельность, если вы специально создадите их, используя операцию как ViewModelStoreOwner
(например, используя ViewModelProvider(activity)
).