Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como funciona a Tombstoning em mvvmcross


Como funciona a Tombstoning em mvvmcross


Tombstoning em MVVMcross refere -se ao processo de salvar e restaurar o estado de um viewmodel quando um aplicativo é suspenso ou encerrado devido a condições de baixa memória, um cenário comum em plataformas móveis como Windows Phone e Android. O MVVMcross fornece mecanismos para lidar com esse processo de maneira eficaz.

Construção e ciclo de vida

O MVVMCROSS ViewModels é instanciado usando um contêiner do IOC, que injeta dependências no ViewModel. O ciclo de vida de um viewModel em MVVMcross inclui vários métodos -chave:

- Construção: O ViewModel é criado com dependências injetadas através do contêiner do IOC.
- init (): inicializa o viewModel com parâmetros de navegação.
- ReloadState (): restaura o estado do viewmodel após Tombstoning.
- start (): chamado quando a inicialização e a reidratação estão completas [3].

Salvando estado

Quando um aplicativo é Tombstone, o MVVMcross chama o método de `SaveSteToBundle` no viewmodel. Este método permite salvar o estado do seu viewmodel armazenando dados em um `imvxbundle`. É aconselhável usar a serialização JSON para armazenar dados complexos [1].

Restaurando estado

Depois que o aplicativo é reativado, o MVVMCROSS tenta restaurar o estado do ViewModel. No entanto, o método exato para restaurar o estado pode variar dependendo da plataforma e da versão do MVVMcross. Em geral, o método `Reloadstate` é usado para reidratar o modelo de vista com o estado salvo [3].

Considerações específicas da plataforma

Cada plataforma suportada pela MVVMcross lida com Tombstoning de maneira diferente:

- Windows Phone: Tombstoning é tratado por eventos de página como `OnNavigatedTo` e` OnNavigatedFrom`. O MVVMcross fornece mecanismos para salvar e restaurar o estado durante esses eventos, mas pode exigir uma configuração adicional para garantir a restauração do estado adequada [4] [5].
- Android: MVVMcross lida com Tombstoning salvando e restaurando o estado de viewmodel quando o aplicativo é pausado ou retomado. No entanto, os problemas podem surgir se a pilha de fundo for limpa ou se os parâmetros de navegação não forem salvos corretamente [6].

Desafios e soluções

O manuseio do túmulo no MVVMcross pode ser um desafio, especialmente ao navegar com os parâmetros. É crucial salvar os parâmetros de navegação junto com o estado do viewmodel para garantir a restauração correta do estado do aplicativo [6] [9]. Além disso, o uso de bibliotecas auxiliares ou soluções personalizadas pode simplificar o processo de salvar e restaurar o estado em diferentes plataformas [5] [8].

Em resumo, o MVVMcross fornece uma estrutura robusta para lidar com o Tombstoning, salvando e restaurando o estado de viewmodel. No entanto, requer implementação e consideração cuidadosas de nuances específicas da plataforma para garantir a recuperação perfeita de aplicativos.

Citações:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-ad-easy-in-windows-phone-mvv/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/devell/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/