Sobes.tech
Junior — Middle

Qual mecanismo é melhor para guardar o estado da interface de utilizador: ViewModel ou SaveInstanceState, e em que é que eles diferem?

sobes.tech IA

Resposta da IA

O ViewModel e o SaveInstanceState servem para guardar o estado da interface do utilizador, mas funcionam de forma diferente e destinam-se a tarefas distintas.

  • ViewModel guarda dados na memória durante alterações de configuração (por exemplo, rotação de ecrã). Vive tanto quanto a Activity ou Fragment, e não é destruído ao recriar a UI. É adequado para armazenar grandes volumes de dados e lógica de negócio.

  • SaveInstanceState é um mecanismo para guardar pequenos dados num Bundle, que é preservado quando a Activity é destruída pelo sistema (por exemplo, por falta de memória). Os dados do SaveInstanceState são restaurados ao recriar a Activity.

O que é melhor usar?

  • Para guardar o estado da UI que deve sobreviver à rotação do ecrã, é melhor usar o ViewModel.
  • Para guardar dados críticos que devem ser restaurados após a destruição completa da aplicação pelo sistema, usa-se o SaveInstanceState.

São frequentemente combinados: ViewModel para a lógica principal e dados, SaveInstanceState para pequenos dados primitivos que precisam de ser restaurados rapidamente.