Sobes.tech
Junior — Middle

Pode-se usar a mesma instância de ViewModel em diferentes partes da aplicação que implementam o padrão MVVM?

sobes.tech IA

Resposta da IA

No padrão MVVM do Android, geralmente cada ecrã ou fragmento tem a sua própria instância de ViewModel para gerir o estado e a lógica desse componente de UI. No entanto, se necessário, pode-se usar a mesma instância de ViewModel em diferentes partes da aplicação, por exemplo, ao usar um ViewModel ligado ao ciclo de vida da Activity e partilhando dados entre vários fragments dentro dessa Activity.

Para isso, usa-se ViewModelProvider com a Activity como proprietário:

val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

Assim, o ViewModel será comum a todos os fragments dentro da Activity, permitindo trocar dados e estado.

Mas não é recomendado usar o mesmo ViewModel entre partes não relacionadas da aplicação (por exemplo, diferentes Activity), pois isso pode levar a fugas de memória e dificuldades na gestão do ciclo de vida.